之前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验证。
【一点经验分享】Yii2 - ajax 和 client side混合检验
原文地址:http://jerryluo.blog.51cto.com/4512926/1614295