当前位置:首页 > Windows程序 > 正文

Yii学习笔记之四(表单验证 api 翻译)

2021-05-25 Windows程序

标签:

1.表单验证
对于用户输入的所有数据,你不能信任,必须加以验证。
所有框架如此,对于yii 可以使用函数
 yii\base\Model::validate()  进行验证
他会返回boolean值的 true /false
如果验证未通过,,可以使用  

yii\base\Model::$errors 属性进行处理,如下代码:

<?php //加载表单模型(绝对地址方式) /*如果上面引入 use app\models\ContactForm; 则可以直接使用 $model = new ContactForm; */ $model = new \app\models\ContactForm; // 接收用户填充的模型的字段 翻入属性 $model->attributes = \Yii::$app->request->post('ContactForm'); if ($model->validate()) { // 所有的输入验证通过 } else { // 验证失败: $errors 是一个包含所有错误信息的数组 $errors = $model->errors; } ?>
2. 声明规则


为了使验证函数 validate() 真正起作用,我们需要定一些验证
规则对应这些表单进行对应的验证,他会自动重写
yii\base\Model::rules() 方法
下面的例子讲述如何使用 rules

<?php public function rules() { return [ // name, email, subject 和 body 属性必须填写 [['name', 'email', 'subject', 'body'], 'required'], //email 必须是一个有效的邮箱地址 ['email', 'email'], ]; } //rule 返回值的格式 [ // 必须的参数一, 指定必须遵守这个规则的某个属性或某些属性. // 对一个单个的属性,你能直接使用属性名 // 不必将他放进一个数组 ['attribute1', 'attribute2', ...], //对于多个则可以放进一个数组 // 必须的参数二, 指定规则的类型. // 他可以是一个类名, 验证方法的别名, 或者是验证方法名 'validator', // 可选的参数三, 指定那一个场景使用这个规则 // 如果没给, 意味着这个规则所有的场景都要将适用 // 你可能也要配置 "except" 规则如果你想使用这个规则 // to all scenarios except the listed ones 'on' => ['scenario1', 'scenario2', ...], // 可选的参数, 定制额外的配置对验证项目 'property1' => 'value1', 'property2' => 'value2', ... ] ?>
1> 对于每一个规则,你必须至少指定哪些属性的规则适用于什么是规则的类型。您可以在下列形式之一指定的规则类型:

(1) 核心验证的别名, 比如 required, in, date, 等等. 请参阅核心验证器为核心的校验器的完整列表。


(2) 在模型类model class中的验证方法的名字, 或一个匿名函数. 请参考内联验证器的详细信息.


(3) 一个完全合格的验证器类名. 请参考标准验证器


一个规则可以用于一个或多个属性验证, 一个属性可以被一个或多个规则验证. 规则可以在某些情况下
只能通过选项指定的应用。如果您不选择指定,这意味着该规则将适用于所有情况。

2> 当 validate() 方法被调用的时候, 下面的步骤来解释验证的过程:

(1) 首先确定哪些属性应该通过获得从属性列表中进行验证
  yii\base\Model::scenarios() 使用当前的场景.这些属性被称为活跃属性。

(2) 确定哪些验证规则将会被使用通过获取 rule 列表从
 yii\base\Model::rules() 在当前的场景中使用. 这些规则被称为活跃规则。

(3) 用一个活跃的规则去验证每一个活跃的与对应规则相关联的属性.
   这些验证规则将根据他们列出的顺序顺序执行。


3. 定制错误信息


大多数验证有默认的错误信息,在验证失败的时候显示出来.例如 required 验证可以添加一句 "Username cannot be blank." 将会在username 没有填写的时候自动出现,如下:

<?php public function rules() { return [ ['username', 'required', 'message' => 'Please choose a username.'], ]; } ?>
有些可能验证支持附加的额外的错误消息,以更准确地描述验证失败不同的原因。例如,数字验证器支持tooBig和tooSmall来描述验证失败时要验证的值分别为过大,过小。您可以配置这些错误信息就像一个验证规则配置验证的其他属性一样。


4. 验证事件


yii\base\Model::validate() 被调用的时候, 它将会自动调用两个自定义的方法:


(1) yii\base\Model::beforeValidate(): 默认的实现会自动触发一个 yii\base\Model::EVENT_BEFORE_VALIDATE 事件. 你也可以重写这个方法或响应这个事件做一些预处理工作 (e.g. 正常化的数据输入) 在验证事件发生之前. 这个方法应该返回一个布尔值,指示验证是否应该继续与否。

(2) yii\base\Model::afterValidate(): 默认的实现会自动触发一个yii\base\Model::EVENT_AFTER_VALIDATE  事件.你也可以重写这个方法或响应这个事件在验证完成后做一些处理工作。


5. 条件验证

温馨提示: 本文由Jm博客推荐,转载请保留链接: https://www.jmwww.net/file/71045.html