Yii2 Ajax异步验证表单,用于验证用户输入字符串的合法性
来源:互联网 发布:军团战争5.15怪物数据 编辑:程序博客网 时间:2024/06/06 02:12
yii2中,ActiveForm默认做了客户端验证,但是表单的提交,却不是无刷新的,自定义的验证规则需要提交后才能验证,这样一来页面就刷新了,体验上就不友好了。也就是常常看到的表单提交后页面会刷新。如果想要开启无刷新的模式,只需要在ActiveForm开始开启enableAjaxValidation即可,下面以具体示例实现介绍:
控制器:
/** * Creates a new SystemMenu model. * If creation is successful, the browser will be redirected to the 'view' page. * @return mixed */ public function actionCreate() { $model = new SystemMenu(); if(!$model->sort) $model->sort = 0; // 该操作是表单字段失去焦点时异步验证,同时如果直接提交表单,也会先执行该操作进行验证 $model->load($_POST); if (Yii::$app->request->isAjax) { Yii::$app->response->format = \yii\web\Response::FORMAT_JSON; return \yii\bootstrap\ActiveForm::validate($model); } //表单提交操作,基本上不需要做改动 if ($model->load(Yii::$app->request->post()) && $model->save()) { //return $this->redirect(['view', 'id' => $model->id]); return $this->redirect(['index']); } else { return $this->render('create', [ 'model' => $model, ]); } }
模型的验证规则:
/** * @inheritdoc */ public function rules() { return [ [['title', 'sort'], 'required'], [['status','parent_id'], 'required','message'=> \Yii::t('app', '请选择{attribute}')], [['parent_id', 'create_time', 'update_time', 'create_user', 'update_user', 'status'], 'integer'], [['sort'], 'integer', 'min' => 0, 'max' => 999], [['title'], 'string', 'max' => 50], [['icon'], 'string', 'max' => 30], [['icon'], 'match','pattern' =>'/^fa fa-(.*?)+$/'], [['title'], 'validateIsRequired'], [['status'], 'in', 'range' => [0, 1]], [['url'], 'string', 'max' => 255] ]; }
视图:
<?phpuse yii\helpers\Html;use yii\widgets\ActiveForm;use yii\helpers\ArrayHelper;use backend\modules\system\models\SystemMenu;use backend\widgets\FontIconWidget;/* @var $this yii\web\View *//* @var $model backend\modules\system\models\SystemMenu *//* @var $form yii\widgets\ActiveForm */?><?php $form = ActiveForm::begin([ 'id' => 'login-form', 'options' => [ 'class' => "form-horizontal", ], 'enableAjaxValidation' => true, // 开启ajax验证 'enableClientValidation' => true, 'fieldConfig' => [ 'template' => "{label}\n<div class=\"col-md-8\">{input}</div>\n<div class=\"row\"><div class=\"col-md-4\"></div><div class=\"col-md-8\">{error}</div></div>", 'labelOptions' => ['class' => 'col-md-4 control-label'], ],]); ?><div class="row"> <div class="col-md-12"> <div class="row"> <div class="col-md-6"> <?= $form->field($model, 'parent_id')->dropDownList(SystemMenu::menuList()) ?> </div> <div class="col-md-6"></div> </div> </div> <div class="col-md-12"> <div class="row"> <div class="col-md-6"> <?= $form->field($model, 'title')->textInput(['maxlength' => true]) ?> </div> <div class="col-md-6"></div> </div> </div> <div class="col-md-12"> <div class="row"> <div class="col-md-6"> <?= $form->field($model, 'url')->textInput(['maxlength' => true]) ?> </div> <div class="col-md-6"></div> </div> </div> <div class="col-md-12"> <div class="row"> <div class="col-md-6"> <?= $form->field($model, 'icon', ['template' => "{label}\n<div class=\"col-md-8\"><div class=\"input-group\">{input}<a href=\"javascript:;\" id=\"btn-font\" class=\"input-group-addon\"><i class=\"fa fa-image\"></i> ".\Yii::t('app', '选择图标')."</a></div></div>\n<div class=\"row\"><div class=\"col-md-4\"></div><div class=\"col-md-8\">{error}</div></div>"])->textInput(['maxlength' => true, 'id' => 'input-font-icon']) ?> </div> <div class="col-md-6"></div> </div> </div> <div class="col-md-12"> <div class="row"> <div class="col-md-6"> <?= $form->field($model, 'sort')->textInput() ?> </div> <div class="col-md-6"></div> </div> </div> <div class="col-md-12"> <div class="row"> <div class="col-md-6"> <?= $form->field($model, 'status')->dropDownList(SystemMenu::_statusArray()) ?> </div> <div class="col-md-6"></div> </div> </div></div><hr><div class="row"> <div class="col-md-1"></div> <div class="col-md-11"> <?= Html::submitButton('<i class="fa fa-check"></i> '.\Yii::t('app', '提交'), ['class' => 'btn btn-w-m btn-primary']) ?> </div></div><?php ActiveForm::end(); ?>
效果图:
如此一来就简单的实现了yii2异步无刷新表单验证了!
本主题篇幅短小但内容精湛,希望对你有所帮助!
2 0
- Yii2 Ajax异步验证表单,用于验证用户输入字符串的合法性
- Yii2 ajax验证表单输入
- ajax在用户登录时异步验证用户合法性
- yii2 modal弹窗之ActiveForm ajax表单异步验证
- ajax异步验证表单
- ajax jquery 异步表单验证
- Javascript验证表单身份证号码的合法性
- 前端和后端的输入合法性验证
- swift 验证输入身份证号的合法性
- 用户添加页面搭建(niceValidate表单验证、ajax手机号异步验证)
- WEB开发中HTML页面表单(FORM)域输入合法性的客户端验证
- yii2表单验证方法
- WPF入门(五):简单绑定 - 用户输入合法性验证
- 工作问题小结——用户输入合法性验证
- ajax异步实现表单的无刷新验证
- jquery---------ajax+validate表单异步提交验证
- jquery---------ajax+validate表单异步提交验证
- jquery---ajax异步提交+validate表单验证
- ZZULIOJ 2126
- 动态规划练习02:最大子矩阵
- SICP 1.6
- redis启动命令
- 详解 NSURLSession
- Yii2 Ajax异步验证表单,用于验证用户输入字符串的合法性
- Oracle序列+触发器+主键(实现主键自增)
- Struts2-Action-6-系列问题(乱码问题解决、简单数据校验)
- Xcode定期清理
- java学习第三十一天之cookie、session
- GDOI2017第二轮模拟总结
- JS获取浏览器UA(User Agent 用户代理)方法
- iOS学习笔记总结整理
- 读cookie中文字符乱码问题