Yii2.0 如何给做自定义表单的验证? [ 2.0 版本 ]
我想在项目里面使用一个自定义的表单结构, 同时做一些表单验证, 希望能够用到Yii里面自带的一些验证功能, 这个方式怎么去做啊?
新手一枚, 望大家多多指教, 谢谢.
最佳答案
-
自定义一个模型,然后在这个模型里设置rules,会自动生成表单验证。
例如:class ContactForm extends Model { public $name; public $email; public $subject; public $body; public $verifyCode; /** * @inheritdoc */ public function rules() { return [ // name, email, subject and body are required [['name', 'email', 'subject', 'body'], 'required'], // email has to be a valid email address ['email', 'email'], // verifyCode needs to be entered correctly ['verifyCode', 'captcha'], ]; }
共 7 条回复感谢你的回答, 我现在是这样做了, 但是为何在 执行
$model->load(Yii::$app->request->post())
的时候 不能正确的载入里面对应的属性呢?
下面是我控制器表单部分的代码public function actionPost(){ if (Yii::$app->request->getIsGet()) { $jobs = $this->getJobs(); $edulevels = $this->edulevel; return $this->render('post', compact('jobs', 'edulevels')); } if (Yii::$app->request->getIsPost()) { $model = new PositionForm(); if ($model->load(Yii::$app->request->post('PositionForm')) && $model->validate()) { echo 'success!'; } else { //echo 'error'; var_dump(Yii::$app->request->post()); var_dump($model); } } }
views是怎么写的呢?
views里最好是使用model自动生成,避免手误。<?php $form = ActiveForm::begin(['id' => 'contact-form']); ?> <?= $form->field($model, 'name') ?> <?= $form->field($model, 'email') ?> <?= $form->field($model, 'subject') ?> <?= $form->field($model, 'body')->textArea(['rows' => 6]) ?>
@lilongsy
可以了, views里面的字段名称必须以数组形式才可以, 这是我在views里面的代码<tr> <td><label class="control-label" for="name">职位名称</label></td> <td width="10"><span class="redstar">*</span></td> <td> <input type="text" class="form-control input-lg" id="name" name="PositionForm[name]" value="" placeholder="请输入职位名称,如:产品经理"> </td> </tr>
lilongsy 觉得很赞
其他 0 个回答
没有找到数据。
猫学乖
注册时间:2015-06-26
最后登录:2016-06-14
在线时长:9小时44分
最后登录:2016-06-14
在线时长:9小时44分
- 粉丝3
- 金钱223
- 威望20
- 积分513