hnrazevedo/validator

Validator是一个简单的数据验证组件。

v2.1.4 2020-11-10 17:43 UTC

This package is auto-updated.

Last update: 2024-09-11 01:59:53 UTC


README

Maintainer Latest Version Scrutinizer Code Quality Build Status Software License PHP from Packagist Total Downloads

Validator是一个简单的数据验证组件。它可以与控制器静态结合使用,或者作为中间件一起使用。它的作者不是开发领域的专业人士,而是一位在技术领域不断丰富自己知识的人。

O Validator é um simples componente de validação de dados. Ele pode ser usado de forma estática com algum controlador ou em conjunto como middleware. Seu autor não é profissional da área de desenvolvimento, apenas alguem da área de Tecnologia que está aperfeiçoando seus conhecimentos.

亮点

  • 易于设置(Fácil de configurar)
  • 当前验证规则(Regras de validação atuais)
  • 遵循标准PSR-15(Segue padrão o PSR-15)
  • Composer ready(Pronto para o composer)

安装

Validator通过Composer提供

"hnrazevedo/validator": "^2.1"

或在终端

composer require hnrazevedo/validator

文档

有关如何使用Validator的详细信息,请参阅组件目录中的示例文件夹

Para mais detalhes sobre como usar o Validator, veja a pasta de exemplos com detalhes no diretório do componente

验证规则

可用规则

  • minlength: 整数
  • maxlength: 整数
  • required: 布尔值
  • equals: 字符串
  • type: 字符串
  • mincount: 整数 - 用于数组值
  • maxcount: 整数 - 用于数组值
  • filter: 整数 - 更多关于可用过滤器的详细信息,请参阅https://php.ac.cn/manual/en/filter.filters.validate.php
  • regex: 字符串

语言

系统已配置为支持多种语言,请确保所需语言在languages文件夹中,并在任何程序之前使用lang方法定义它

O sistema foi configurado para suportar vários idiomas, então verifique se o idioma desejado se encontra na pasta languages e defina-o com o método lang antes de qualquer procedimento

$valid = Validator::lang('pt_br')->namespace('App\\Rules')->execute($data);

注意

如果字段是数组,则将在其所有元素上测试规则。

Em caso do campo ser um array, as regras serão testadas em todos seus elementos.

验证规则必须在类对象的构造中定义,其中命名空间在Validator中定义

As regras de validação devem ser definidas na construção do objeto da classe com o namespace denifida no Validator

namespace App\Rules;

use HnrAzevedo\Validator\Validator;
use HnrAzevedo\Validator\Rules;

Class User{

    public function __construct()
    {
        Validator::add($this, function(Rules $rules){
            $rules->action('login')
                  /*
                   * @property string $inputName
                   * @property array $rules
                   * @property string $textPlaceholder
                  */
                  ->field('email',['minlength'=>1,'filter'=>FILTER_VALIDATE_EMAIL,'required'=>true],'Email address')
                  ->field('password',['minlength'=>6,'maxlength'=>20,'required'=>true],'Password')
                  ->field('password2',['equals'=>'password','required'=>true],'Confirm password')
                  ->field('remember',['minlength'=>2,'maxlength'=>2,'required'=>false])
                  ->field('birth',['type'=>'date','required'=>true],'Date of birth')
                  ->field('phones',['mincount'=>2,'maxcount'=>3,'required'=>true,'minlength'=>8,'maxlength'=>9]);
            return $rules;
        });
        return $this;
    }

}

验证数据格式

验证数据必须以下述方式传递给组件

Os dados para validação devem ser passados ​​para o componente da seguinte forma

$data = [
    'email'=> 'hnr.azevedo@gmail.com',
    'password' => 123456,
    'password2' => 123456,
    'phones' => [
        '949164770','949164771','949164772'
    ],
    'birth' => '28/09/1996' 
    '_PROVIDER' => 'user',   /* Class responsible for validations */
    '_ROLE' => 'login'       /* Form action */
];

定义命名空间

为了动态使用以避免在放置带有规则类的整个命名空间时需要,您必须在执行数据验证之前定义命名空间

Para utilização de forma dinamica para evitar a necessidade de colocar o namespace inteiro de uma class com regras, deve-se definir o namespace antes de executar a validação dos dados

检查数据

验证错误以错误数组的形式返回,如果有多个发生,它们可以同时显示

Os erros de validação são retornados em uma matriz de erro, caso haja mais de uma ocorrência, eles podem ser exibidos ao mesmo tempo

$valid = Validator::namespace('App\\Rules')->execute($data);

if(!$valid){
    $errors = [];
    foreach(Validator::getErrors() as $err => $message){
        $errors[] = [
            'input' => array_keys($message)[0],                 // Return name input error
            'message' => $message[array_keys($message)[0]]      // Return message error
        ];
    }
}

toJson

返回可读的Json,用于在客户端执行验证

Retorna um Json legível para validação a ser realizada no lado do cliente

$json = Validator::namespace('App\\Rules')->toJson($data);

/**
 * Result:
 * {
 *     email:{required:true,filter:274,minlength:1},
 *     password:{required:true,maxlength:20,minlength:6},
 *     password2:{required:true,equals:"password"},
 *     remember:{required:false,maxlength:2,minlength:2},
 *     birth:{required:true,type:"date"},
 *     phones:{maxlength:9,minlength:8,required:true,maxcount:3,mincount:2}
 * }
 */

中间件

要使用 HnrAzevedo\Validator 作为中间件,需要在 ServerRequest 中定义以下信息:

Para utilizar o HnrAzevedo\Validator como middleware, é necessário definir as seguintes informações na ServerRequest

/*
 * @property string $namespace
 * @property array $data
 * @property string $language
 */
$serverRequest = $serverRequest->withAttribute('validator',[
    'namespace' => 'HnrAzevedo\\Validator\\Example\\Rules',
    'data' => $data,
    'lang' => 'pt_br'
]);

支持

安全:如果您发现任何与安全相关的问题,请通过电子邮件 hnr.azevedo@gmail.com 联系,而不是使用问题跟踪器。

如果您发现任何与安全相关的问题,请通过电子邮件 hnr.azevedo@gmail.com 联系,而不是使用问题跟踪器。

致谢

许可协议

MIT 许可协议(MIT)。有关更多信息,请参阅 许可文件