Yii – AJAX Validation


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.

Ajax Requests

Advertisements

”;

Leave a Reply

Your email address will not be published. Required fields are marked *