Yii - Validación AJAX

La validación del nombre de usuario solo debe realizarse en el lado del servidor porque solo el servidor tiene la información necesaria. En este caso, puede utilizar la validación basada en AJAX.

Step 1 - Para habilitar la validación AJAX, modifique el registration ver de esta manera.

<?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>

También debemos preparar el servidor, para que pueda manejar las solicitudes AJAX.

Step 2 - Modificar el actionRegistration método del SiteController de esta manera.

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 - Ahora, ve a http://localhost:8080/index.php?r=site/registration, notará que la validación del formulario se realiza mediante solicitudes AJAX.