При регистрации компании нужно, чтобы пароль вводился 2 раза в два разных поля ("пароль" и "повторите пароль")
Есть мысль сделать это добавив в модель переменную $passwd2, но будет ли это оптимально? Ведь эта переменная будет использоваться только при регистрации или смене пароля.
CCompareValidator compares the specified attribute value with another value and validates if they are equal.
The value being compared with can be another attribute value (specified via compareAttribute) or a constant (specified via compareValue. When both are specified, the latter takes precedence. If neither is specified, the attribute will be compared with another attribute whose name is by appending "_repeat" to the source attribute name.
public function rules()
{
return array(
array('username, password', 'required'),
array('password_repeat', 'required', 'on'=>'register'),
array('password', 'compare', 'on'=>'register'),
);
}
А что у тебя в контроллере?
// создаём модель User и задаём её сценарий как `register`. Выражение ниже
эквивалентно следующему:
// $model=new User;
// $model->scenario='register';
$model=new User('register');
// наполняем модель данными
$model->attributes=$_POST['User'];
// проводим валидацию
if($model->validate()) // если данные верны
…
else
…
Смысл использовать register в том, что регистрация происходит пользователем, а update и insert администраторами, при работе с пользовательскими данными.