View Первой страницы
Код: Выделить всё
<?php $form = ActiveForm::begin([ 'id' => 'form-signup', ]); ?>
<?= $form->field($model, 'last_name',
['template' => '<p>Last Name:*</p>{input}{error}'
])->textInput(['autofocus' => true])->label(false) ?>
<?= $form->field($model, 'first_name',
['template' => '<p>First Name:*</p>{input}{error}'
])->textInput()->label(false) ?>
<?php $suffix = (Yii::$app->session->hasFlash('userexist')) ? '' : 'notactive'; ?>
<?= $form->field($model, 'suffix',
[ 'inputOptions' => ['class' => $suffix], 'template' => '<p>Suffix:*</p>{input}{error}'
])->textInput()->label(false) ?>
<div class="col-md-4 col-md-offset-8 col-sm-4 col-sm-offset-8 col-xs-6 col-xs-offset-0 middle_button">
<?= Html::submitButton('next', ['class' => 'gray_button', 'name' => 'signup-button']) ?>
</div>
<?php ActiveForm::end(); ?>
Код: Выделить всё
<?php $form = ActiveForm::begin(['id' => 'form-signup-full']); ?>
<?= $form->field($model, 'username')->hiddenInput()->label(false) ?>
<?= $form->field($model, 'last_name')->hiddenInput()->label(false) ?>
<?= $form->field($model, 'first_name')->hiddenInput()->label(false) ?>
<?= $form->field($model, 'suffix')->hiddenInput()->label(false) ?>
<?= $form->field($model, 'password', [
'options' => ['class' => 'col-xs-12 col-md-6'],
'template' => '<p>password*:></p>{input}{error}'
])->passwordInput(['autofocus' => true])->label(false) ?>
<?= $form->field($model, 'password_check', [
'options' => ['class' => 'col-xs-12 col-md-6'],
'template' => '<p>Password check*:</p>{input}{error}'
])->passwordInput()->label(false) ?>
<div class="col-md-4 col-md-offset-8 col-sm-4 col-sm-offset-8 col-xs-6 col-xs-offset-0 middle_button">
<?= Html::submitButton('Save'), ['class' => 'gray_button', 'name' => 'signup-full-button']) ?>
</div>
<?php ActiveForm::end(); ?>
Код: Выделить всё
public $username;
public $password;
public $password_check;
public $last_name;
public $first_name;
public $suffix;
public function scenarios()
{
return [
'minimal' => ['last_name', 'first_name', 'username', 'suffix'],
'full' => ['username', 'last_name', 'first_name', 'suffix','password','password_check']
];
}
public function rules()
{
return [
[['last_name', 'suffix', 'first_name', 'password', 'password_check'], 'trim'],
[['password'], 'string', 'min' => 6, 'max' => 64],
['email', 'email'],
['password_check', 'compare', 'compareAttribute' => 'password'],
['email_check', 'compare', 'compareAttribute' => 'email'],
[['last_name', 'first_name', 'password', 'password_check'], 'required'],
[['last_name', 'first_name', 'suffix'], 'string', 'min' => 2, 'max' => 255],
[['password'], 'match', 'pattern' => '/^(?=(.*[a-z]){1})(?=(.*[A-Z]){1})(?=(.*\d){3})(?=(.*[$@!%*#?&]){1}).+/']
];
}
Код: Выделить всё
public function actionSignup()
{
if (!Yii::$app->user->isGuest) {
return $this->goHome();
}
$post = Yii::$app->request->post('SignupForm');
$scenario = (!empty($post['username'])) ? 'full' : 'minimal';
$model = new SignupForm(['scenario' => $scenario]);
if ($model->load(Yii::$app->request->post())) {
//Шаг первый
if ($scenario == 'minimal')
{
$model->username = $model->last_name.'_'.$model->first_name;
if (!empty($model->suffix)) $model->username .= '_'.$model->suffix;
if (!$model->checkExist()) {
return $this->render('signup_full', [
'model' => $model,
]);
}
else {
//Уже есть такой юзер
if (empty($model->suffix)) Yii::$app->session->setFlash('username_exist', Yii::t('app', 'Username exist'));
else Yii::$app->session->setFlash('username_exist', Yii::t('app', 'Username suffix exist'));
Yii::$app->session->setFlash('userexist');
return $this->render('signup', [
'model' => $model,
]);
}
}
else { //Шаг второй
if (!$model->emailExist())
{
if ($model->signup() != null) {
//Регистрация прошла успешно
Yii::$app->session->setFlash('signup_success', Yii::t('app', 'User signup'));
return $this->redirect(Url::to(['site/index']));
}
else {
//Ошибка создания юзера
foreach ($model->getErrors() as $key => $value) {
Yii::$app->session->setFlash('error', $value);
}
}
}
else {
Yii::$app->session->setFlash('full_username_exist', Yii::t('app', 'Email exist'));
}
return $this->render('signup_full', [
'model' => $model,
]);
}
}
return $this->render('signup', [
'model' => $model,
]);
}
П.С. Если перекинуть поля со второй старницы в первую все работает. Код View и Model но там все остнольное то что Yii генерирует.