Yii - Xác thực AJAX
Việc xác thực tên người dùng chỉ nên được thực hiện ở phía máy chủ vì chỉ máy chủ mới có thông tin cần thiết. Trong trường hợp này, bạn có thể sử dụng xác thực dựa trên AJAX.
Step 1 - Để kích hoạt xác thực AJAX, hãy sửa đổi registration xem theo cách này.
<?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>
Chúng ta cũng nên chuẩn bị máy chủ để nó có thể xử lý các yêu cầu AJAX.
Step 2 - Sửa đổi actionRegistration phương pháp của SiteController cách này.
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 - Bây giờ, đi tới http://localhost:8080/index.php?r=site/registration, bạn sẽ nhận thấy rằng việc xác thực biểu mẫu được thực hiện bởi các yêu cầu AJAX.