Код: Выделить всё
public $password_repeat; // при регистрации, смене пароля
public function rules()
{
return array(
array('password','length','max'=>32,'min'=>3), // длина пароля не больше 32 символов
array('password','required','on'=>'insert, registration','message'=>Yii::t('lan','Field "{attribute}" incorrect.')),
array('password','match','pattern'=>'/^[\w\s]{3,32}$/','message'=>Yii::t('lan','Field "{attribute}" incorrect.')),//паттерн на пароль
array('password_repeat','compare','compareAttribute'=>'password','on'=>'registration','message'=>Yii::t('lan','Field "{attribute}" incorrect.')), // проверяем чтобы поле "повторите пароль" совпадало с полем "пароль"
);
}
Код: Выделить всё
public function actionRegistration()
{
$model=new User(); // создаем новую модель User
$details=new UserDetails(); // создаем новую модель UserDetails
if(isset($_POST['User']) and isset($_POST['UserDetails'])) // нас послали из формы /themes/[theme_name]/views/user/registration.php ?
{
$model->setScenario('registration');//устанавливаем сценарий проверки
$details->setScenario('registration');//устанавливаем сценарий проверки
$model->attributes=$_POST['User']; // присваивание данных для модели User
$details->attributes=$_POST['UserDetails']; // присваивание данных для модели UserDetails
$validate_m=$validate_d=TRUE; // признак того, что валидация моделей: User, UserDetails прошла успешно
if(!$model->validate()) // проверяем модель User
{
$validate_m=FALSE; // валидация не прошла
}
if(!$details->validate()) // проверяем модель UserDetails
{
$validate_d=FALSE; // валидация не прошла
}
if($validate_m===TRUE and $validate_d===TRUE)//валидация моделей User, UserDetails прошла успешно?
{
// да,валидация моделей User, UserDetails прошла успешно
$password=$model->password;//сохраняем пароль, чтобы отослать юзеру
$model->password=md5($password);// шифруем пароль
$model->password_repeat=md5($model->password_repeat);//шифруем "повторите пароль", что при записи сработала валидация password==password_repeat;
if($model->save())
{
}//if($model->save())
}//if($validate_m and $validate_d)
}//if(isset($_POST['User']) and isset($_POST['UserDetails']))
$this->render('registration',array('model'=>$model,'details'=>$details)); // показываем форму регистрации - /themes/[theme_name]/views/user/registration.php
}
Код: Выделить всё
if($validate_m===TRUE and $validate_d===TRUE)//валидация моделей User, UserDetails прошла успешно?
Код: Выделить всё
$model->password_repeat=md5($model->password_repeat);
В yii 1.0.10 такого не было, раз валидация прошла, то при вызове $model->save() никакой "повторной валидации не было" или я ошибаюсь?