есть форма регистрации
Код: Выделить всё
$model = new User();
if(isset($_POST['User']))
{
$model->attributes = $_POST['User'];
if($model->save)
{
echo 'ok';
}
}
Код: Выделить всё
$model = new User();
if(isset($_POST['User']))
{
$model->attributes = $_POST['User'];
if($model->save)
{
echo 'ok';
}
}
Код: Выделить всё
$model = new User();
if(isset($_POST['User']))
{
$model->attributes = $_POST['User'];
if($model->save)
{
echo 'ok';
}
}
Код: Выделить всё
$model = new RegistrationForm();
if(isset($_POST['RegistrationForm']))
{
$model->attributes = $_POST['RegistrationForm'];
if($model->validate())
{
$user = new Users;
$user->email = $_POST['RegistrationForm']['email'];
$user->password = $_POST['RegistrationForm']['password'];
if ($user->save(false))
{
Yii::app()->user->setFlash();
}
}
}
Код: Выделить всё
public function actionRegistration(){
$model = new User();
if(isset($_POST['User']))
{
$model->attributes=$_POST['User'];
if($model->save())
{
$this->redirect('login');
}
}
$this->render('_form_registration', array('model'=>$model));
}
Код: Выделить всё
protected function beforeSave()
{
parent::beforeSave();
if($this->isNewRecord)
{
// здесь сохраняем всё что нам нужно...
$this->date_registr = time();
....
}
return parent::beforeSave();
}
Код: Выделить всё
public function rules()
{
return array(
array('username, password', 'required'),
array('username', 'match', 'pattern' => '/^[A-Za-z0-9\s,]+$/u','message' => 'Логин содержит недопустимые символы.'),
array('password', 'match', 'pattern' => '/^[A-Za-z0-9@\s,]+$/u','message' => 'Пароль содержит недопустимые символы.'),
array('username, password, email, password2, verifyCode', 'required', 'on'=>'registration'),
array('password', 'compare', 'compareAttribute'=>'password2', 'on'=>'registration'),
array('email, username', 'unique', 'on'=>'registration'),
...
);
}
Код: Выделить всё
<div class="form">
<?php $form = $this->beginWidget('bootstrap.widgets.TbActiveForm', array(
'layout' => TbHtml::FORM_LAYOUT_HORIZONTAL,
'id'=>'form-registration',
'enableClientValidation'=>true,
'clientOptions'=>array(
'validateOnSubmit'=>true,
),
)); ?>
<?php echo $form->errorSummary($model); ?>
<?php echo $form->TextFieldControlGroup($model,'username', array('placeholder'=>'Логин')); ?>
<?php echo $form->PasswordFieldControlGroup($model,'password', array('placeholder'=>'Пароль')); ?>
<?php echo $form->PasswordFieldControlGroup($model,'password2', array('placeholder'=>'Повторите пароль')); ?>
<?php echo $form->TextFieldControlGroup($model,'email', array('placeholder'=>'E-Mail')); ?>
<?php if(Yii::app()->user->isGuest || !CCaptcha::checkRequirements()): ?>
<?php $this->widget('CCaptcha', array('buttonLabel' => '(Обновить)<br />')); ?>
<?php echo $form->textFieldControlGroup($model,'verifyCode', array('placeholder'=>'Защитный код')); ?>
<?php endif; ?>
<?php echo TbHtml::formActions(array(
TbHtml::submitButton('Регистрация', array(
'color' => TbHtml::BUTTON_COLOR_PRIMARY,
)),
)); ?>
<?php $this->endWidget(); ?>
</div><!-- form -->
Пардон, опичатка, edited.Alex@ писал(а):Вы присваиваете $model две разные модели зачем?
Да можно и так, но я ведь, наоборот, хочу уйти от такого метода. Хочу оставить модель Юсер чистой без всяких verifyCode и password2, это только два свойства (можна сказать нормально), но их может быть больше, а когда их больше ты начинаешь тормозить и теряться.dignityinside писал(а):Я у себя делал примерно так...
Controller:Модель:Код: Выделить всё
public function actionRegistration(){ $model = new User(); if(isset($_POST['User'])) { $model->attributes=$_POST['User']; if($model->save()) { $this->redirect('login'); } } $this->render('_form_registration', array('model'=>$model)); }
Здесь же я делал проверку данных:Код: Выделить всё
protected function beforeSave() { parent::beforeSave(); if($this->isNewRecord) { // здесь сохраняем всё что нам нужно... $this->date_registr = time(); .... } return parent::beforeSave(); }
Ну и форма:Код: Выделить всё
public function rules() { return array( array('username, password', 'required'), array('username', 'match', 'pattern' => '/^[A-Za-z0-9\s,]+$/u','message' => 'Логин содержит недопустимые символы.'), array('password', 'match', 'pattern' => '/^[A-Za-z0-9@\s,]+$/u','message' => 'Пароль содержит недопустимые символы.'), array('username, password, email, password2, verifyCode', 'required', 'on'=>'registration'), array('password', 'compare', 'compareAttribute'=>'password2', 'on'=>'registration'), array('email, username', 'unique', 'on'=>'registration'), ... ); }
Код: Выделить всё
<div class="form"> <?php $form = $this->beginWidget('bootstrap.widgets.TbActiveForm', array( 'layout' => TbHtml::FORM_LAYOUT_HORIZONTAL, 'id'=>'form-registration', 'enableClientValidation'=>true, 'clientOptions'=>array( 'validateOnSubmit'=>true, ), )); ?> <?php echo $form->errorSummary($model); ?> <?php echo $form->TextFieldControlGroup($model,'username', array('placeholder'=>'Логин')); ?> <?php echo $form->PasswordFieldControlGroup($model,'password', array('placeholder'=>'Пароль')); ?> <?php echo $form->PasswordFieldControlGroup($model,'password2', array('placeholder'=>'Повторите пароль')); ?> <?php echo $form->TextFieldControlGroup($model,'email', array('placeholder'=>'E-Mail')); ?> <?php if(Yii::app()->user->isGuest || !CCaptcha::checkRequirements()): ?> <?php $this->widget('CCaptcha', array('buttonLabel' => '(Обновить)<br />')); ?> <?php echo $form->textFieldControlGroup($model,'verifyCode', array('placeholder'=>'Защитный код')); ?> <?php endif; ?> <?php echo TbHtml::formActions(array( TbHtml::submitButton('Регистрация', array( 'color' => TbHtml::BUTTON_COLOR_PRIMARY, )), )); ?> <?php $this->endWidget(); ?> </div><!-- form -->