yii2 ActiveForm 弹窗ajax表单异步验证

时间: 2017-02-14  分类: Yii2  收藏

yii2中,ActiveForm默认做了客户端验证,但是表单的提交,却不是无刷新的。也就是常常看到的表单提交后页面会刷新。如果想要开启无刷新的模式,只需要在ActiveForm开始开启enableAjaxValidation即可,像下面这样

<?php $form = ActiveForm::begin([
        'id' => 'form-id',
        'enableAjaxValidation' => true,
        'validationUrl' => Url::toRoute(['validate-form']),
    ]
); ?>

注意哦,id和enableAjaxValidation一个都不能少。

如果不设置validateUrl参数,则默认是当前路由,即表单form的action,当表单input失去焦点的时候,你对数据的修改就直接就提交到后端进行了处理了,
所以需要给 validateUrl设置一个路由地址,其所要请求的操作的意义就在于异步做验证!
 

//表单提交操作,基本上不需要做改动
if ($model->load(Yii::$app->request->post()) && $model->save()) {
        return $this->redirect(['index']);
    }
}
return $this->render('create', [
    'model' => $model,
]);

// @see http://www.manks.top/yii2_modal_activeform_ajax.html
// 看主要的验证操作,该操作是表单字段失去焦点时异步验证,同时如果直接提交表单,也会先执行该操作进行验证
public function actionValidateForm () {
    Yii::$app->response->format = \yii\web\Response::FORMAT_JSON;
    $model = new Model();  
    $model->load(Yii::$app->request->post());  
    return \yii\widgets\ActiveForm::validate($model);  
}

如此一来就简单的实现了yii2异步无刷新表单验证了!

分享到:

评论

昵 称: