какой-то детский баг с валидацией

Есть профайл пользователя. В форме редактирования профиля есть поля которые можно изменять + password & password_repeat (второе через public $password_repeat в модели)

Если оба поля с паролями пустое, то используется один набор правил для валидации плюс исключается обновление пароля.

Если же хотя бы одно поле с паролем не пустое, но выполняется другой набор правил для валидации.

Проверка валидации происходит через




$scenario = 'no_pass';

$model->scenario = $scenario;


if( $has_pass ) {

$scenario = 'password';

}


if( $model->validate($scenario) ) {

 // сохранение и т.д.

}



само правило для password вот




			array('first_name, last_name, position, company_name, company_type, phone, password, password_repeat', 'required', 'on' => 'password'),

			array('password', 'length', 'min' => 6, 'allowEmpty' => false, 'on' => 'password'),

			array('password', 'compare', 'compareAttribute' => 'password_repeat', 'allowEmpty' => false, 'on' => 'password'),

			array('first_name, last_name, position, company_name, company_type, phone', 'filter', 'filter' => 'trim', 'on' => 'password'),



беда в том что если я ввожу пароль только в одном поле и меньше 6 символов то ошибка не возникает.

хотя я проверил что данные с формы приходят корректные, присваиваются аттрибутам модели тоже корректно, так же используется правило password для валидации.

Но, не могу понять:

  1. почему нет сообщения о том что поле пароля меньше 6 символов

  2. почему нет сообщения что password_repeat не может быть пустым (а я ввожу пароль только в password длиной 3 символа)

  3. почему нет сообщения что password & password_repeat не идентичные

Yii: 1.1.16

OS: Винда

нашел :)

забыл модели сценарий поменять


if( $has_pass ) {

$scenario = 'password';

$model->scenarion = $scenario;

}

я почему-то думал что в validate() он приоритетней.