Yii - Validation AJAX
La validation du nom d'utilisateur ne doit être effectuée que du côté serveur car seul le serveur dispose des informations nécessaires. Dans ce cas, vous pouvez utiliser la validation basée sur AJAX.
Step 1 - Pour activer la validation AJAX, modifiez le registration voir de cette façon.
<?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>
Nous devons également préparer le serveur pour qu'il puisse gérer les requêtes AJAX.
Step 2 - Modifier le actionRegistration méthode de la SiteController par ici.
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 - Maintenant, allez à http://localhost:8080/index.php?r=site/registration, vous remarquerez que la validation du formulaire se fait par requêtes AJAX.