【发布时间】:2014-05-12 04:22:36
【问题描述】:
我有一个重置密码的功能。 在我必须比较密码和 password_confirm 字段时,我得到了一个奇怪的行为:
我的表格
echo $this->Form->hidden('tkn', array('value' => $tkn));
echo $this->Form->hidden('uid', array('value' => $uid));
echo $this->Form->input('password',array('type' => 'password', 'name' => 'data[Appuser][password]'));
echo $this->Form->input('password_confirm',array('type' => 'password', 'name' => 'data[Appuser][password_confirm]'));
我的模型验证:
var $validate = array(
'password' => array(
'rule' => array('minLength', '6'),
'message' => '{password} minLength 6!'
),
'password_confirm' => array(
'rule' => array('equaltofield','password'),
'message' => '{password_confirm} not equal!'
),
);
function equaltofield($val1, $val2){
return $this->data[$this->alias][key($val1)] == $this->data[$this->alias][$val2];
}
我的控制器:
if($this->Appuser->save($this->data)){
$this->Session->setFlash(__('Password has been updated'));
}else{
debug($this->Appuser->invalidFields());
}
现在: 当我提交一个空表单时,我从 invalidFields() 得到以下返回
array(
'password' => '*****',
'password_confirm' => array(
(int) 0 => '{password_confirm} not equal!',
(int) 1 => '{password_confirm} not equal!'
)
)
问题 1:为什么我没有收到密码没有最小长度的消息? 问题2:为什么我会两次收到第二条用于比较密码的消息?
当输入 2 个不同的最小长度密码时,我又得到了这个:
array(
'password_confirm' => array(
(int) 0 => '{password_confirm} not equal!',
(int) 1 => '{password_confirm} not equal!'
)
)
当 debug($this->data) 我也得到了这个(如果有帮助的话)
array(
'Api' => array(
'tkn' => '6837d241bf1076c3c55a95abbcfafa04dc19a33c',
'uid' => '1'
),
'Appuser' => array(
'password' => '*****',
'password_confirm' => 'asdfgh'
)
)
对我上面的两个问题有什么想法吗? 提前致谢!!
【问题讨论】:
标签: forms validation cakephp passwords