在写项目的时候遇到需要用到自动验证、自动完成、还有字段映射。这里话是关于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多次提交...