本文实例讲述了Yii数据模型中rules类验证器用法。分享给大家供大家参考,具体如下:

本文实例讲述了Yii2验证器用法。分享给大家供大家参考,具体如下:

实现用户注册表单验证实现方法很简单的。

本文实例讲述了Yii框架where查询用法。分享给大家供大家参考,具体如下:

public function rules(){ return array( array('project_id, type_id, status_id, owner_id, requester_id,', 'numerical', 'integerOnly'=>true), array('name', 'length', 'max'=>256), array('description', 'length', 'max'=>2000), array('create_time,create_user_id,update_user_id, update_time', 'safe'), array('id, name, description, project_id, type_id, status_id, owner_id', 'on'=>'search'), );}//required: 必填array('title,content','required'),//match: 正则表达式验证array('birthday', 'match', 'pattern'=>'%^\d{4}\d{1,2}\1\d{1,2}$%', 'allowEmpty'=>true, 'message'=>'生日必须是年-月-日格式'),//email:邮箱格式验证array,//url:URL格式验证array,//unique:唯一性验证array('username', 'unique','caseSensitive'=>false,'className'=>'user','message'=>'用户名"{value}"已经被注册,请更换'),//caseSensitive 定义大小写是否敏感//compare:一致性验证array('repassword', 'compare', 'compareAttribute'=>'password','message'=>'两处输入的密码并不一致'),//length:长度验证//in: 验证此属性值在列表之中。//numerical: 验证此属性的值是一个数字//captcha: 验证属性值和验证码中显示的一致array('verifyCode','captcha'),//type: 验证属性的类型是否为type所指定的类型.//file: 验证一个属性是否接收到一个有效的上传文件//default: 属性指定默认值//exist: 验证属性值在数据库中是否存在//boolean: 验证布尔属性值//date: 检验此属性是否描述了一个日期、时间或日期时间//safe: 属性标志为在批量赋值时是安全的。//unsafe: 标志为不安全,所以他们不能被批量赋值。

先看一下验证器的使用。

在模型里边设置一个方法,定义具体表单验证规则

1.简述

更多关于Yii相关内容感兴趣的读者可查看本站专题:《Yii框架入门及常用技巧总结》、《php优秀开发框架总结》、《smarty模板入门基础教程》、《php面向对象程序设计入门教程》、《php字符串用法总结》、《php+mysql数据库操作入门教程》及《php常见数据库操作技巧汇总》

public function rules(){ return [ [['email', 'password'], 'required'], ['password', 'string', 'min'=>6], ];}

我们rules()方法对表单数据进行验证时候,rules()方法怎么在YII框架中运行呢?

Yii的查询操作找使用where用的很多 总结下常用的哈希格式与操作符格式

希望本文所述对大家基于Yii框架的PHP程序设计有所帮助。

如上所示,验证器主要使用在rules里面,对当前model里面的属性值进行验证以检查是否满足某种要求。

查看各个validator

2.操作符格式

验证器使用格式:

以上所述是小编给大家介绍的Yii框架数据模型的验证规则rules()被执行的方法,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对脚本之家网站的支持!

[操作符, 操作数1, 操作数2, …]

书写格式为:[需要验证的属性,验证器名称,验证器参数]。

[ 'LIKE','nickname','%'.strtr($mix_kw,['%'=>'\%', '_'=>'\_', '\\'=>'\\\\']).'%', false ];

如果需要验证的属性为多个可用数组,如果为一个属性可用字符串也可用数组来表示。

and:操作数会被 AND 关键字串联起来。例如,[‘and’, ‘id=1’, ‘id=2’]
将会生成 id=1 AND id=2。如果操作数是一个数组,它也会按上述规则转换成
字符串。例如,[‘and’, ‘type=1’, [‘or’, ‘id=1’, ‘id=2’]] 将会生成
type=1 AND 。 这个方法不会自动加引号或者转义。 or:用法和 and
操作符类似,这里就不再赘述。 not:只需要操作数 1,它将包含在 NOT()
中。例如,[‘not’,’id = 1’] 将生成 [‘not’, ‘id=1’]。操作数 1
也可以是个描述多个表达式的数组。例如 [‘not’, [‘status’ => ‘draft’,
‘name’ =>’example’]] 将生成 NOT AND 。
between:第一个操作数为字段名称,第二个和第三个操作数代表的是这个字段
的取值范围。例如,

每个属性都可以有多个验证器,如上面的password使用了
required和string两个验证器。

[‘between’, ‘id’, 1, 10] 将会生成 id BETWEEN 1 AND 10。
如果你需要建立一个值在两列之间的查询条件(比如 11 BETWEEN min_id AND
max_id), 你应该使用 BetweenColumnsCondition。 请参阅 条件-对象格式
一章以了解有关条件的对象定义的更多信息。

常用验证器:

not between:与 between 类似,除了 BETWEEN 被 NOT BETWEEN 替换
在生成条件时。

Yii2已经内置了一些常用的验证器。所有的验证器都从基类yii\validators\Validator继承实现。我大概总结下有这么几类。

in:第一个操作数应为字段名称或者 DB
表达式。第二个操作符既可以是一个数组, 也可以是一个 Query
对象。它会转换成IN 条件语句。如果第二个操作数是一个
数组,那么它代表的是字段或 DB 表达式的取值范围。如果第二个操作数是 Query
对象,那么这个子查询的结果集将会作为第一个操作符的字段或者 DB
表达式的取值范围。 例如, [‘in’, ‘id’, [1, 2, 3]] 将生成 id IN 。
该方法将正确地为字段名加引号以及为取值范围转义。in
操作符还支持组合字段,此时,
操作数1应该是一个字段名数组,而操作数2应该是一个数组或者 Query 对象,
代表这些字段的取值范围。

数字相关:

not in:用法和 in 操作符类似,这里就不再赘述。 like:

integer——整数用来检测属性值是否为整数,以及最大、最小值检测等。(yii\validators\NumberValidator)

第一个操作数应为一个字段名称或 DB 表达式,

double——浮点用来检测属性值是否为浮点数,即小数。(yii\validators\NumberValidator)

第二个操作数可以使字符串或数组,
代表第一个操作数需要模糊查询的值。比如,[‘like’, ‘name’,’tester’]
会生成 name LIKE ‘%tester%’。如果范围值是一个数组,那么将会生成用 AND
串联起来的 多个 like 语句。例如,[‘like’, ‘name’, [‘test’,
‘sample’]] 将会生成 name LIKE ‘%test%’ AND name LIKE ‘%sample%’。

number——数字这个和上面的double完全相同,只是用了2个名称。(yii\validators\NumberValidator)

第三个可选的操作数来指定应该如何转义数值当中的特殊字符。
该操作数是一个从需要被转义的特殊字符到转义副本的数组映射。
如果没有提供这个操作数,将会使用默认的转义映射。如果需要禁用转义的功能,
只需要将参数设置为 false 或者传入一个空数组即可。需要注意的是,
当使用转义映射,第二个操作数的值的前后 将会被加上百分号。

格式相关:

or like:用法和 like 操作符类似,区别在于当第二个操作数为数组时, 会使用
OR 来串联多个 LIKE 条件语句。 not like:用法和 like
操作符类似,区别在于会使用 NOT LIKE 来生成条件语句。 or not like:用法和
not like 操作符类似,区别在于会使用 OR 来串联多个 NOT LIKE 条件语句。
exists:需要一个操作数,该操作数必须是代表子查询 yii\db\Query
的一个实例, 它将会构建一个 EXISTS 表达式。 not exists:用法和 exists
操作符类似,它将创建一个 NOT EXISTS 表达式。

date——日期检验属性值是否为正确的日期格式。(yii\validators\DateValidator)

>,<= 或者其他包含两个操作数的合法 DB
操作符:第一个操作数必须为字段的名称,
而第二个操作数则应为一个值。例如,[‘>’, ‘age’, 10] 将会生成
age>10。

email——邮件检测属性值是否是正确的电子邮件格式。(yii\validators\EmailValidator)

3.哈希格式

url——URL用来判断属性值是否是正确的url地址。(yii\validators\UrlValidator)

它是以数组的形式来书写的,数组的键表示字段的名称,而数组的值则表示
这个字段需要匹配的值。例如:

对值进行函数处理:

// ...WHERE  AND  AND $query->where([ 'status' => 10, 'type' => null, 'id' => [4, 8, 15],]);

filter——过滤器这个是对属性值进行加工处理的。如对属性值加前缀、替换特定的字符串等等。(yii\validators\FilterValidator)

4.附加条件

trim——裁边这个是对属性值进行加工处理的。只是去掉字符串两侧的空格、或指定的字符串。(yii\validators\FilterValidator)

你可以使用 andWhere 在原有条件的基础上 附加额外的条件

上传文件验证:

5.过滤条件

file——文件这个主要是对上传的文件进行验证,如格式、大小等。(yii\validators\FileValidator)

当 WHERE 条件来自于用户的输入时,你通常需要忽略用户输入的空值。
例如,在一个可以通过用户名或者邮箱搜索的表单当中,用户名或者邮箱
输入框没有输入任何东西,这种情况下你想要忽略掉对应的搜索条件,
那么你就可以使用 filterWhere() 方法来实现这个目的:

image——图片这个和上面的file验证器差不多,不过是专门用来验证图片的。(yii\validators\ImageValidator)

// $username 和 $email 来自于用户的输入$query->filterWhere([ 'username' => $username, 'email' => $email,]);

判断比较:

filterWhere 唯一的不同就在于,前者 将忽略在条件当中的hash
format的空值。所以如果$email 为空而 $username
不为空,那么上面的代码最终将生产如下 SQL …WHERE username=:username。

compare——比较用来对两个属性值进行比较,如相等、大于、小于比较等。(yii\validators\CompareValidator)

提示: 当一个值为
null、空数组、空字符串或者一个只包含空格的字符串时,那么它将被判定为空值。

in——包含用来检测属性值是否包含在指定的数组中。(yii\validators\RangeValidator)

更多关于Yii相关内容感兴趣的读者可查看本站专题:《Yii框架入门及常用技巧总结》、《php优秀开发框架总结》、《smarty模板入门基础教程》、《php面向对象程序设计入门教程》、《php字符串用法总结》、《php+mysql数据库操作入门教程》及《php常见数据库操作技巧汇总》

exist——存在用来检测在数据表中是否已经存在此属性值。(yii\validators\ExistValidator)

希望本文所述对大家基于Yii框架的PHP程序设计有所帮助。

unique——唯一性这个和exist差不多,用来检测值是否是唯一。(yii\validators\UniqueValidator)

string——字符串对属性值进行长度判断,如最大长度、最短长度等。(yii\validators\StringValidator)

boolean——布尔型用来检查属性的值是否为布尔值。(yii\validators\BooleanValidator)

default——默认值这个是用来给属性设置默认值的。如当属性值为null的时候,给它设置为
空的默认值。(yii\validators\DefaultValueValidator)

required——必填这个用来检查属性值是否为空。(yii\validators\RequiredValidator)

captcha——验证码这个主要是在界面使用验证码的时候对验证码进行验证的。(yii\captcha\CaptchaValidator)

match——正则表达式这个就比较强大了,用来检测属性值是否匹配给出的正则。上面所列出的基本都可以用这个实现。(yii\validators\RegularExpressionValidator)

其它:

safe——安全这个不进行验证,仅仅用来指定属性值是安全的。(yii\validators\SafeValidator)

更多关于Yii相关内容感兴趣的读者可查看本站专题:《Yii框架入门及常用技巧总结》、《php优秀开发框架总结》、《smarty模板入门基础教程》、《php面向对象程序设计入门教程》、《php字符串用法总结》、《php+mysql数据库操作入门教程》及《php常见数据库操作技巧汇总》

希望本文所述对大家基于Yii框架的PHP程序设计有所帮助。

发表评论

电子邮件地址不会被公开。 必填项已用*标注

网站地图xml地图