Este pacote foi inspirado em outros dois pacotes, mas foi criado pela necessidade de uma customização melhor nas messages de validação e na validação dos formatos.
Para fazer a instalação do pacote, rode o comando:
composer require jp-system/validator-docs
Nesse pacote você pode publicar as messages de validação e customizá-las, usando o comando:
php artisan vendor:publish --tag="docs"
Caso não queira publicar o arquivo de tradução, você poderá criar suas próprias mensagens dentro do arquivo validation.php
:
'docs' => [
'cpf' => 'Este campo deve ser um CPF válido.',
...
],
Regras | Formatos | Formatação Opcional |
---|---|---|
uf | Sem formato | null |
cep | 99999-999 , 99.999-999 |
false |
cnh | Sem formato | null |
cns | Sem formato | null |
cpf | 999.999.999-99 |
true |
pis | 999.99999.99-9 |
true |
cnpj | 99.999.999/9999-99 |
true |
money | 99.999,99 , 99,999.99 |
false |
cellphone | 99999-9999 , 9999-9999 |
false |
telephone | 9999-9999 |
false |
cpf_or_cnpj | 999.999.999-99 , 99.999.999/9999-99 |
true |
vehicle_plate | AAA-1234 , AAA-1A23 |
false |
cellphone_with_ddd | (99)99999-9999 , (99)9999-9999 , (99) 99999-9999 , (99) 9999-9999 |
false |
telephone_with_ddd | (99)9999-9999 |
false |
cellphone_with_code | +99(99)99999-9999 , +99(99)9999-9999 |
false |
telephone_with_code | +55(99)9999-9999 |
false |
Todas as regras podem ser utilizadas a partir da Rule
do próprio Laravel:
'cpf' => [
'required',
'string',
Rule::cpf(),
],
'cnpj' => [
'required',
'string',
Rule::cnpj()->format(),
],
As regras em que existe a opção de formatação, mas é opcional, podemos aplicar a formatação de três maneiras:
'cpf' => [
'required',
'string',
'cpf:format',
],
'cnpj' => [
'required',
'string',
Rule::cnpj()->format(),
],
'cpf_or_cnpj' => [
'required',
'string',
(new CPForCNPJ)->format(),
],
A regra para dinheiro aceita dois parâmetros, a moeda e a localicação. Utilizamos a classe de suporte Number do próprio Laravel:
'money_1' => [
'required',
'string',
'money:BRL,pt_BR', // default
],
'money_2' => [
'required',
'string',
Rule::money()->parameters(['USD', 'en_US']),
],
Qualquer melhoria ou correção, poderá abrir um PR ou Issue.