controller:
$model = new RegForm(); $model->setScenario ('add'); if ( $model->load ( Yii::$app->request->post () ) ) { if (Yii::$app->request->isAjax && $model->load(Yii::$app->request->post())) { Yii::$app->response->format = Response::FORMAT_JSON; $model->setScenario ('ajax'); return ActiveForm::validate($model); } // ... if($model->signUp()){ return $this->redirect(['site/login']); } }model:
public function rules () { return [ [ [ 'email', 'verifycode' ], 'filter', 'filter' => 'trim', 'on'=>['add', 'ajax'] ], [ [ 'email', 'password', 'verifycode' ], 'required', 'message' => '不能为空', 'on'=>['add', 'ajax'] ], [ 'email', 'email', 'message' => '邮箱格式不正确', 'on' => [ 'add', 'ajax' ] ], [ 'verifycode', 'captcha', 'message' => '验证码不正确', 'on'=>['add'] ], ]; }view:
<?php $form = ActiveForm::begin ( [ 'id' => 'reg-form', 'enableAjaxValidation'=>true, 'options' => [ 'class' => 'form-horizontal'], ] ); ?> ...大概是这样
共 3 条回复
pengcx 回答于 23小时前
好像yii2自带的登录就是ajax的,错误信息可以用{error}。我最想要实现的是,错误信息弹窗显示,大哥你有做过吗
ioioj5 回答于 21小时前
@pengcx 不大明白你什么意思,是实现弹窗还是获取错误信息, 如果是获取错误信息的话, model验证的错误信息都在 $model->errors里面, 你dump一下看看就知道了;
pengcx 回答于 21小时前
@ioioj5 我是想在视图层以弹窗的形式展示错误信息