hnrazevedo / validator
Validator是一个简单的数据验证组件。
Requires
- php: >=7.4
- hnrazevedo/http: dev-master
README
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 联系,而不是使用问题跟踪器。
致谢
- Henri Azevedo(开发者)
许可协议
MIT 许可协议(MIT)。有关更多信息,请参阅 许可文件。