Yii - Convalida AJAX

La convalida del nome utente deve essere eseguita solo sul lato server perché solo il server dispone delle informazioni necessarie. In questo caso, puoi utilizzare la convalida basata su AJAX.

Step 1 - Per abilitare la convalida AJAX, modificare il file registration visualizzare in questo modo.

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

Dovremmo anche preparare il server, in modo che possa gestire le richieste AJAX.

Step 2 - Modifica il file actionRegistration metodo del SiteController per di qua.

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 - Adesso vai a http://localhost:8080/index.php?r=site/registration, noterai che la convalida del modulo viene eseguita dalle richieste AJAX.