之前yii2的自定義檢驗需要使用到ajax來觸發服務器端自定義代碼的檢驗功能,後來發現整個表單都使用ajax的話有很大的延遲。
思考了一下正常php表單的解決方案,最好的方法就是一部分表單元素使用client-side檢驗,需要服務器端的再使用ajax,例如email或者用戶名是否已被其他人註冊了。代碼如下:
<?php $form = ActiveForm::begin([ 'id' => 'reg-form', ]); ?> <?= $form->field($model, 'name_en') ?> <?= $form->field($model, 'email',['enableAjaxValidation'=>true]) ?> ...... <?php ActiveForm::end(); ?>
email後面的設置['enableAjaxValidation'=>true]就是指明這個activefield才需要使用ajax驗證。