Yii – AJAX Validation
”;
The username validation should only be done on the server side because only the server has the needed information. In this case, you can use AJAX-based validation.
Step 1 − To enable the AJAX validation, modify the registration view this way.
<?php use yiibootstrapActiveForm; use yiibootstrapHtml; ?> <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>
We should also prepare the server, so that it can handle the AJAX requests.
Step 2 − Modify the actionRegistration method of the SiteController this way.
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]); }
Step 3 − Now, go to http://localhost:8080/index.php?r=site/registration, you will notice that the form validation is done by AJAX requests.
Advertisements
”;