djordje/li3_validators

锂验证器集合

安装: 67

依赖: 2

建议者: 0

安全: 0

星标: 2

关注者: 1

分支: 0

公开问题: 0

类型:lithium-library

dev-master 2013-07-12 16:30 UTC

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_ 前缀的同名列字段,例如 emailconfirm_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')));'

项目状态

[Build Status] (https://travis-ci.org/djordje/li3_validators) [project status] (http://stillmaintained.com/djordje/li3_validators)