【原创】 ThinkPHP的ignore
栏目:PHP  作者:隆航  阅读:(1796)

在写项目的时候遇到需要用到自动验证、自动完成、还有字段映射。这里话是关于ignore的笔记。

首先在文档中他的写法是:3.1.2版本开始新增了ignore完成规则,这一规则表示某个字段如果留空的话则忽略,通常可用于修改用户资料时候密码的输入

array('password','',2,'ignore')

然后我遇到的问题是,假设最高管理员修改用户资料的时候没有填密码项,那么默认不修改,这样确实可以完成。可是当我修改密码的时候却显示插入的数据是没有md5加密的。

blob.png

在官网查了下资料

array('password','md5',2,'function') ,
array('password','',2,'ignore'),

说这样写是错的,应该是下面的

array('password','_md5',2,'callback') ,
array('password','',2,'ignore'), 
protected function _md5( $data ){
        if(!$data){
            return '';
        }
        return md5( $data );
}

然后我用的时候还是上面说的,最后我找到了官方的说法,和我一样类似的需求的话,需要自己来定义方法来处理。

最后我的操作的是,当用户提交的时候密码不为空就走Model,如果为空就直接save

public function userEditH(){
if(!IS_AJAX){
$this->error('提交方式不正确',0,0);
}elseif(I('post.u_password')){
$tmp = D('User')->editH();
if(is_array($tmp))
$data = array("error"=>1,"msg"=>"用户名已存在!");
elseif($tmp)
$data = array("error"=>0,"msg"=>"修改用户完成!");
else
$data = array("error"=>1,"msg"=>"修改时发生错误!");
}else{
if(M('user')->save(I('post.')))
$data = array("error"=>0,"msg"=>"修改用户完成!");
else
$data = array("error"=>1,"msg"=>"修改时发生错误1!");
}
$this->ajaxReturn($data);
}



昵称
邮箱
域名
  记住 通知博主
验证码

  程序相关

站点版本:青春博客-V 2.1.0

开源版本:青春博客-Beta v2.0

 下载  在线支付  在线工具  在线音乐

  随机文章