找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 769|回复: 0
打印 上一主题 下一主题

thinkPHP自动验证、自动添加及表单错误问题分析

[复制链接]

3444

主题

3465

帖子

1万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
11142
跳转到指定楼层
楼主
发表于 2018-2-14 05:31:52 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

            本文实例讲述了thinkPHP自动验证、自动添加及表单错误问题。分享给大家供大家参考,具体如下:
最近再做一个项目,想用thinkphp写验证,结果泪奔了几天。一开始就是令牌错误,后来有什么自动添加无效。
一直在测试,一直在查找,知道发现create()方法原来有两个参数,
第一个参数是大家都知道了数据参数,第二个是隐藏的$type参数,这个参数用来控制什么的呢??
[U]复制代码[/U] 代码如下://$type = $type?$type!empty($data[$this->getPk()])?self::MODEL_UPDATE:self::MODEL_INSERT);
仔细琢磨了这句话才发现,这个隐藏参数是用来指明本次数据库具体是什么操作的?
$type取值为  1即为插入操作,0即为更新操作,默认的情况下是不用给这个参数赋值的,原因是,系统能自动识别。
如果你的主键是数据库自动的添加的,那就没事。如果是手动添加,那就悲剧了。因为默认是更新数据操作。
下面是我写的自动完成的代码
protected $_auto = array(
array('password','sha1',1,'function'),
array('date', 'time', 1, 'function'),
);
看到那个1了没有,那个1表示是当插入数据是,才执行函数。PS:就是因为这个,纠结了我N久。
当要录入数据的时候您可以这么写:
create($_POST,1)//【插入数据】
create($_POST,2)//【更新数据】
直接告诉create方法此次操作是插入操作,这样可以解决自动完成时机不对问题,自动完成无效问题。
但你执意不要这么写,我也没办法,你只要记得,如果create()函数,默认为更新数据。写Model方法时。

thinkphp 自动完成图
看到没有,
protected $_auto = array(
array('password','sha1',2,'function'),
array('date', 'time', 2, 'function'), //把1换成2就好了。
);
问题就可以解决了。
更多关于thinkPHP相关内容感兴趣的读者可查看本站专题:《ThinkPHP入门教程》、《thinkPHP模板操作技巧总结》、《ThinkPHP常用方法总结》、《smarty模板入门基础教程》及《PHP模板技术总结》。
希望本文所述对大家基于ThinkPHP框架的PHP程序设计有所帮助。
            
            
您可能感兴趣的文章:
  • ThinkPHP 防止表单重复提交的方法
  • ThinkPHP令牌验证实例
  • ThinkPHP表单自动提交验证实例教程
  • ThinkPHP中的create方法与自动令牌验证实例教程
  • ThinkPHP表单自动验证实例
  • ThinkPHP 表单自动验证运用示例
  • ThinkPHP中处理表单中的注意事项
  • thinkPHP实现表单自动验证
  • ThinkPHP表单数据智能写入create方法实例分析
  • thinkPHP中create方法与令牌验证实例浅析
  • ThinkPHP表单令牌错误的相关解决方法分析
  • ThinkPHP中create()方法自动验证表单信息
  • ThinkPHP下表单令牌错误与解决方法分析
            
  • 分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
    收藏收藏
    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    用户反馈
    客户端