在写项目的时候遇到需要用到自动验证、自动完成、还有字段映射。这里话是关于ignore的笔记。
首先在文档中他的写法是:3.1.2版本开始新增了ignore完成规则,这一规则表示某个字段如果留空的话则忽略,通常可用于修改用户资料时候密码的输入
array('password','',2,'ignore')
然后我遇到的问题是,假设最高管理员修改用户资料的时候没有填密码项,那么默认不修改,这样确实可以完成。可是当我修改密码的时候却显示插入的数据是没有md5加密的。
在官网查了下资料
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); }
上一篇: HTML转义和反转义...
下一篇: JQ中AJAX多次提交...