frbit/validator-loader

该软件包已被弃用且不再维护。没有建议的替代软件包。

从文件或目录加载 Laravel 验证器定义

0.1.4 2014-09-02 15:21 UTC

This package is not auto-updated.

Last update: 2020-01-24 15:11:56 UTC


README

Build Status

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');