以下是验证规则
public function rules()
{
return array(
// username and password are required
array('oldPassword', 'required'),
array('oldPassword', 'authenticate'),
....
);
}
public function authenticate($attribute,$params)
{
$this->userModel=User::model()->findByPk(Yii::app()->user->id);
if($this->userModel!=null){
if(!$this->userModel->validatePassword($this->oldPassword))
$this->addError($attribute, "Incorrect current password");
}
}
一切正常,但问题出在这里......当我将oldPassword留空时,“必需”和&的验证错误显示“身份验证”,而我想显示第一个的错误信息,如果不是空白,则显示后者。
答案 0 :(得分:2)
在authenticate()
中添加条件,仅验证oldPassword
是否为空:
public function authenticate($attribute, $params) {
if ($this->oldPassword) {
...
}
}