Yii学习笔记之四(表单验证 api 翻译)
标签:
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
1> 对于每一个规则,你必须至少指定哪些属性的规则适用于什么是规则的类型。您可以在下列形式之一指定的规则类型:
(1) 核心验证的别名, 比如 required, in, date, 等等. 请参阅核心验证器为核心的校验器的完整列表。
(2) 在模型类model class中的验证方法的名字, 或一个匿名函数. 请参考内联验证器的详细信息.
(3) 一个完全合格的验证器类名. 请参考标准验证器
一个规则可以用于一个或多个属性验证, 一个属性可以被一个或多个规则验证. 规则可以在某些情况下
只能通过选项指定的应用。如果您不选择指定,这意味着该规则将适用于所有情况。
2> 当 validate() 方法被调用的时候, 下面的步骤来解释验证的过程:
(1) 首先确定哪些属性应该通过获得从属性列表中进行验证
yii\base\Model::scenarios() 使用当前的场景.这些属性被称为活跃属性。
(2) 确定哪些验证规则将会被使用通过获取 rule 列表从
yii\base\Model::rules() 在当前的场景中使用. 这些规则被称为活跃规则。
(3) 用一个活跃的规则去验证每一个活跃的与对应规则相关联的属性.
这些验证规则将根据他们列出的顺序顺序执行。
大多数验证有默认的错误信息,在验证失败的时候显示出来.例如 required 验证可以添加一句 "Username cannot be blank." 将会在username 没有填写的时候自动出现,如下:
有些可能验证支持附加的额外的错误消息,以更准确地描述验证失败不同的原因。例如,数字验证器支持tooBig和tooSmall来描述验证失败时要验证的值分别为过大,过小。您可以配置这些错误信息就像一个验证规则配置验证的其他属性一样。
当 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 事件.你也可以重写这个方法或响应这个事件在验证完成后做一些处理工作。
温馨提示: 本文由Jm博客推荐,转载请保留链接: https://www.jmwww.net/file/71045.html