kashiuno/task-validator

该软件包已被放弃,不再维护。未建议替代软件包。

自定义验证器

dev-master 2020-11-20 06:08 UTC

This package is not auto-updated.

Last update: 2022-02-26 00:35:29 UTC


README

安装和需求

在Packagist上发布的软件包。您可以通过Composer安装它。

命令:composer require kashiuno/task-validator:dev-master

软件包需要php7.4或更高版本。

使用

您可以在扩展AbstractForm类的类上使用验证器。

1. 指定规则

当您扩展AbstractForm类时,您可以重写rules()方法,该方法必须返回包含规则的数组

示例

public function rules(): array
{
    return [
        [
            'name' => new RegExpValidator(
                'Specified string is not match the pattern',
                ['expression' => '/\\d/', 'match' => true]
            ),
        ],
        ['name' => new RequireValidator('Name must be specify')],
        [
            'name' => new CallableValidator(
                'Name not assert to callable', [
                'callback' => function ($value) {
                    return is_string($value);
                },
            ]
            ),
        ],
        ['age' => new RequireValidator('Age must be specify')],
    ];
}

注意:您的表单类必须包含规则中指定的字段

2. 在客户端使用

实例化表单后,您可以运行load()方法从数组初始化字段

数组的每个元素都必须具有等于字段名称的键,其他数组键应忽略

示例

$form = new Form();
$form->load(['name' => 'John', 'surName' => 'Moore', 'age' => 24]);

然后您运行validate()方法,该方法运行由rules()方法返回的所有验证规则。validate()方法返回true或false

您可以通过运行getErrors()方法来获取验证错误

$form = new Form();
$form->validate();
$form->getErrors();
3. 验证器

所有验证器都可以接受错误消息和配置关联数组

可调用验证器

config: ['callback' => Callable]

回调是必须的

示例

 $validator = new CallableValidator('message', ['callback' => fn ($value) => is_string($value)]);
正则表达式验证器

config: ['expression' => string, 'match' => bool]

表达式是必须的

示例

$validator = new RegExpValidator('message', ['expression' => '/\d/', match => false]);

Match参数表示字符串是否与表达式匹配

必需验证器

示例

$validator = new RequireValidator('message');
字符串验证器

config: ['strict' => bool]

示例

$validator = new StringValidator($this->message, ['strict' => true]);

如果指定了strict参数,验证器检查值的严格类型,否则不检查并通过