Изучая статью (раздел "Определение правил проверки"), руководство по созданию блога и пробуя все это на практике, я обнаружил, что валидация authenticate будет вызываться всегда, независимо от того, валидны ли все предыдущие правила:
Код: Выделить всё
class LoginForm extends CFormModel
{
public $username;
public $password;
public $rememberMe;
private $_identity;
public function rules()
{
return array(
array('username, password', 'required'),
array('rememberMe', 'boolean'),
array('password', 'authenticate'),
);
}
public function authenticate($attribute,$params)
{
$this->_identity=new UserIdentity($this->username,$this->password);
if(!$this->_identity->authenticate())
$this->addError('password','Incorrect username or password.');
}
Отсюда вопрос - можно ли предотвратить проверку оставшихся правил, если провалилось первое, либо нужно убрать из правил валидацию authenticate и провести ее после того, как мы убедимся, что все поля введены корректно?