frbit / validator-loader
该软件包已被弃用且不再维护。没有建议的替代软件包。
从文件或目录加载 Laravel 验证器定义
0.1.4
2014-09-02 15:21 UTC
Requires
- illuminate/filesystem: 4.2.*
- illuminate/translation: 4.2.*
- illuminate/validation: 4.2.*
Requires (Dev)
- mockery/mockery: *
- phpunit/phpunit: *
- symfony/yaml: 2.4.*
This package is not auto-updated.
Last update: 2020-01-24 15:11:56 UTC
README
Laravel 验证器加载器
从文件或目录(或您想要存储它们的地方)加载 Laravel 验证器定义。
一般思路是将验证(规则)集中化,以简化维护并最大化重用性。
对于服务提供者,将加载器优雅地集成到 Laravel 中,请参阅 此处。
功能
- 提供简单的继承,以便重用验证规则
- 允许使用变量,以保持验证简洁且易于阅读
- 支持 JSON、YAML 或原生 PHP 文件。或包含此类文件的目录。
- 灵活、可扩展的接口
- 可以在 Laravel 之外使用
安装
$ php composer.phar require "frbit/validator-loader:*"
示例
这就是它的用法
<?php use \Frbit\ValidatorLoader\Factory; $loader = Factory::fromFile("my-rules.yml"); # or "my-rules.json" or "my-rules.php" $inputData = array('email' => 'foo@bar.tld'); $validator = $loader->get('my-form', $inputData); if ($validator->fails()) { # .. }
这是文件(结构)的样貌
--- variables: FOO: /foo/ bar: 5 validators: my-form: rules: email: - min:10 # use the bar variable - max:<<bar>> # use the FOO variable - regex:<<FOO>> messages: email.min: EMail too short email.max: EMail too long email.regex: EMail not foo enough other-form: # extend from above extends: my-form rules: email: # just differ in the min rule - min:15 messages: # just differ in the regex error message email.regex: You are not foo
目录中的验证器文件
随着应用程序的复杂性和所需验证规则的增多,将规则拆分为多个文件会更有意义。
每个命名的验证器(和变量)名称必须在所有文件中是唯一的。
<?php use \Frbit\ValidatorLoader\Factory; $loader = Factory::fromDirectory("my-directory");
从数组获取验证器定义
如果您需要灵活性。
<?php use \Frbit\ValidatorLoader\Factory; $loader = $loader = Factory::fromArray(array( 'variables' => array( 'FOO' => '/foo/', 'bar' => 5 ), 'validators' => array( 'my-form' => array( 'rules' => array( 'email' => array( 'min:10', 'max:<<bar>>' ) ), 'messages' => array( 'email.min' => 'Too short', 'email.max' => 'Too long' ) ) ) ));
使用自定义验证方法
自定义验证规则(与 Validator::extend 方法的签名相同),可以在定义(文件)中或程序化地添加。一旦添加,它们将自动在所有命名验证器中可用。
定义文件
--- methods: foo: FooValidator@validate variables: FOO: /foo/ bar: 5 validators: my-form: rules: email: - foo messages: email.foo: EMail is not foo
程序化
<?php // .. $loader->setMethod('foo', 'FooValidator@validate');