Yii-ajax-validation

提供:Dev Guides
移動先:案内検索

Yii-AJAX検証

サーバーにのみ必要な情報があるため、ユーザー名の検証はサーバー側でのみ行う必要があります。 この場合、AJAXベースの検証を使用できます。

  • ステップ1 *-AJAX検証を有効にするには、*登録*ビューをこの方法で変更します。
<?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>

また、AJAXリクエストを処理できるようにサーバーを準備する必要があります。

ステップ2 *- *SiteControlleractionRegistration メソッドをこの方法で変更します。

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]);
}

ステップ3 *-ここで、 *http://localhost:8080/index.php?r = site/registration にアクセスすると、フォームの検証がAJAXリクエストによって行われていることがわかります。

Ajaxリクエスト