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 请求