Проверка имени пользователя должна выполняться только на стороне сервера, поскольку только сервер имеет необходимую информацию. В этом случае вы можете использовать проверку на основе AJAX.
Шаг 1. Чтобы включить проверку AJAX, измените представление регистрации следующим образом.
<?php use yii\bootstrap\ActiveForm; use yii\bootstrap\Html; ?> <div class = "row"> <div class = "col-lg-5"> <?php $form = ActiveForm::begin(['id' => 'registration-form', 'enableAjaxValidation' => true]); ?> <?= $form->field($model, 'username') ?> <?= $form->field($model, 'password')->passwordInput() ?> <?= $form->field($model, 'email')->input('email') ?> <?= $form->field($model, 'country') ?> <?= $form->field($model, 'city') ?> <?= $form->field($model, 'phone') ?> <div class = "form-group"> <?= Html::submitButton('Submit', ['class' => 'btn btn-primary', 'name' => 'registration-button']) ?> </div> <?php ActiveForm::end(); ?> </div> </div>
Мы также должны подготовить сервер, чтобы он мог обрабатывать запросы AJAX.
Шаг 2 — Измените метод actionRegistration в SiteController следующим образом.
public function actionRegistration() { $model = new RegistrationForm(); if (Yii::$app->request->isAjax && $model->load(Yii::$app->request>post())) { Yii::$app->response->format = Response::FORMAT_JSON; return ActiveForm::validate($model); } return $this->render('registration', ['model' => $model]); }
Шаг 3 — Теперь перейдите по адресу http: // localhost: 8080 / index.php? R = site / registration , вы заметите, что проверка формы выполняется запросами AJAX.