djordje / li3_validators
锂验证器集合
Requires
- php: >=5.3
- composer/installers: dev-master
This package is not auto-updated.
Last update: 2024-09-28 14:06:51 UTC
README
目录
安装和用法
Git克隆
cd path/to/libraries
git clone git://github.com/djordje/li3_validators.git
或者通过 composer
将此添加到您的 composer.json 文件
{
"minimum-stability": "dev",
"require": {
"djordje/li3_validators": "dev-master"
}
}
完成这两个步骤中的任何一个后,使用您的编辑器打开 app/config/bootstrap/libraries.php 并将以下内容添加到文件底部
Libraries::add('li3_validators')
现在您可以在模型中使用这些验证器,就像使用任何其他捆绑或添加的验证器一样!
自定义验证器
唯一验证器
名称: 'unique'
确保输入的值在数据库中是唯一的。如果 'events' 是 update,则使用提供的选择进行查询
选项
'key' 字符串 - 如果 'events' 是更新,则将用于条件键的数据库表键,默认为 'id'
'keyValue' 字符串 - 如果您不想从 'values' 字段中获取它,请设置键值,默认为 null,这意味着如果未更改 'key',则字段将获取 $options['values']['id'] 的值
确认验证器
名称: 'confirm'
确认此字段与比较的字段相等。
选项
'strategy' 字符串(direct|password)- 默认为 'direct',这意味着我们直接比较值与期望的字段,即 'string' === 'string'。如果我们将其设置为 'password',验证器将使用 Password::check() 来比较值与期望的字段
'against' 字符串 - 默认为 null,这意味着我们将比较此字段与具有 confirm_ 前缀的同名列字段,例如 email 与 confirm_email,或者我们可以设置我们想要比较的字段名
依赖关系验证器
名称: 'dependencies'
检查字段依赖关系。评估条件以查看所有依赖关系是否正确
选项
'conditions' 数组 - Eval 比较构建器 兼容的条件数组
示例
$options = array('conditions' => array( array('gender', '===', 'M') ));
此字段将要求 'gender' 字段等于 'M'
与旧数据库值比较验证器
名称: 'compareWithOldDbValue'
将值与数据库中的现有值进行比较
选项
'strategy' 字符串(direct|password)- 默认为 'direct',这意味着我们直接比较值与期望的字段,即 'string' === 'string'。如果我们将其设置为 'password',验证器将使用 Password::check() 来比较值与期望的字段
'findBy' 字符串 - 将用于查找原始值的字段名,默认为 'id'
'field' 字符串 - 原始字段名
示例
$options = array( 'strategy' => 'password', 'field' => 'password' );
此验证器将假设此字段(例如 'old_password')的值等于具有 'id' 等于当前 'id' 的 'password' 字段的值
条件范围验证器
名称: 'condtionalInRange'
此验证器与 Lithium 的 'inRange' 验证器非常相似,但需要条件为 true
选项
'upper' 整数
'lower' 整数
'conditions' 数组 - Eval 比较构建器 兼容的条件数组
示例
$options = array( 'lower' => 169, 'upper' => '206', 'conditions' => array( array('gender', '===', 'M') ) );
此假设仅当 'gender' 字段存在且等于 'M' 时,此字段的值(例如 'height')大于 169 且小于 206
覆盖验证器
电子邮件验证器
名称: 'email'
选项
'pattern' 混合(false|regex)- 如果 false,则使用 php filter_var() 函数(默认在 Lithium 中)检查值,或者使用 regex 进行匹配。
'mx' 布尔值,启用验证器检查 MX DNS 记录是否存在
您可以使用选项 options 'mx' => false, 'pattern' => false 来实现锂的默认行为。
默认情况下,此过滤器会检查自定义正则表达式,该正则表达式不匹配所有 RFC 5322 有效的电子邮件地址,但会匹配大多数正确的电子邮件地址,并且不会检查域名是否与 MX DNS 记录匹配。'mx' => false, 'pattern' => '/^[a-z0-9][a-z0-9_.-]*@[a-z0-9.-]{3,}\.[a-z]{2,4}$/i'
评估比较构建器
li3_validators\extensions\util\EvalComparation::build(array $options)
选项
conditions 数组 - 此数组将被转换为 eval 字符串
values 数组 - 生成条件时将使用的值的关联数组
通过示例理解此实用方法是最好的方式
$options = array( 'conditions' => array(array('name', '===', 'diff_test_name')), 'values' => array('name' => 'test_name') ); $eval_one = EvalComparation::build($options); // 'return (('test_name' === 'diff_test_name'));' $options = array( 'conditions' => array( array('name', '===', 'diff_test_name'), '||', array('name', '===', 'test_name') ), 'values' => array('name' => 'test_name') ); $eval_two = EvalComparation::build($options); // 'return (('test_name' === 'diff_test_name') || ('test_name' === 'test_name'));'
eval($eval_one) 将评估为 false
eval($eval_two) 将评估为 true
您还可以构建嵌套条件
$options = array( 'conditions' => array( array('name', '===', 'diff_test_name'), '&&', array( array('other_field', '===', null), '||', array('other_field', '===', 'correct') ) ), 'values' => array('name' => 'test_name', 'other_field' => 'other_field_val') ); $eval_tree = EvalComparation::build($options); // 'return (('test_name' === 'diff_test_name') && (('other_field_val' === null) || ('other_field_val' === 'correct')));'
项目状态
[] (https://travis-ci.org/djordje/li3_validators) [
] (http://stillmaintained.com/djordje/li3_validators)