thinkphp自动验证与自动填充无效的解决办法_PHP教程

php中文网
发布: 2016-07-13 10:31:13
原创
1121人浏览过

自动验证与自动填充是在使用thinkphp时经常用到的功能,但偶尔会碰到到自动验证与自动填充不起作用的情况,本文就thinkphp 自动验证与自动填充无效可能的原因做一些分析并提出相应的解决办法。

(1)create() 方法有问题

ThinkPHP 自动验证与自动填充是在创建数据对象 create() 时实现的,因此自动验证与自动填充无效很大程度上与 create() 有关。

create 方法语法如下:

create(mixed data, string type)

立即学习PHP免费学习笔记(深入)”;

data 表示接受的数据,type 表示本次的具体操作(写入还是更新数据)。两个参数都可省略,data 参数省略的情况下默认为接受 $_POST 数据,而 type 默认情况下由系统自动识别。

但系统自动识别 type 是有缺陷的,当传入的字段有主键字段时,系统就识别为更新操作,否则就是写入操作。所以当主键字段非自动增长而是需要 SQL 写入时,那么自动验证和自动填充都可能无效。

例如添加数据记录时,如果表单中有主键字段或者系统中产生了主键字段(如录入设备编号),那么 ThinkPHP 就认为本次操作为更新操作,对于例如下面设定的自动验证和填充都会略过:

protected $_validate = array(

// 新增时验证标题唯一

array('title','','标题已经存在!',0,'unique',1),

};

// 自动填充

protected $_auto = array(

千面视频动捕
千面视频动捕

千面视频动捕是一个AI视频动捕解决方案,专注于将视频中的人体关节二维信息转化为三维模型动作。

千面视频动捕 27
查看详情 千面视频动捕

// 新增时填充时间戳

array('pubtime','time',1,'function'),

);

尽管在操作中,执行了 add() 操作将数据写入了数据表,但这时会发现自动验证与自动填充无效。

出现这种情况时,只需将操作类型显式的传入 create() 方法即可,即 create($_POST,1),告诉系统本次操作为写入数据。另外如果传入的数据不是 $_POST ,也要将数据当作参数传入,如 create($_GET)。

(2)数据字段未对应

由于粗心,未对应好表单字段与数据表字段。

(3)数据表字段做了更改

在开发过程中,更改了表字段名称,而缓存未及时更新,导致系统判断为无效字段而被 unset 掉。所以在更改了表字段名称之后,及时将 Runtime/Data 下的数据表缓存清除。

(4)Model 命名错误

Model 命名错误,未严格按照规范命名,如头字母未大写或粗心导致字母顺序不对,多或少字母等。这等错误往往会直接导致模型失效,大小写这边特别需要注意。

(5)数据表无自增的id

就是数据表中没有自增的id时,验证时就会找不到需要验证的数据,所以会失败。

以上就是ThinkPHP自动验证与自动填充无效可能出现的几种原因,当出现问题时要一条一条的进行排除,相信自己一定可以找到错误的,当然还有一些未知的错误,如果您发现了另外的一种原因,请在下方留言指正。

您可能感兴趣的文章

  • 如何设置phpmyadmin自动登陆和取消自动登录
  • php利用filter函数验证邮箱、url和ip地址的方法
  • PHP 验证身份证号是否正确的函数
  • js,php正则验证是否为数字与字母的混合(6-15位)
  • 使用ThinkPHP必须掌握的调试方法
  • thinkphp页面跳转(successerror)如何设置跳转等待时间
  • php提取身份证号码中的生日日期以及验证是否为未成年人的函数
  • ThinkPHP中execute和query方法的区别

www.bkjia.comtruehttp://www.bkjia.com/PHPjc/764121.htmlTechArticle自动验证与自动填充是在使用thinkphp时经常用到的功能,但偶尔会碰到到自动验证与自动填充不起作用的情况,本文就thinkphp 自动验证与自...
相关标签:
PHP速学教程(入门到精通)
PHP速学教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号