Laravel Validation

Laravel
Tempo de leitura: 4 minutos

Laravel Validation: A validação de dados é um aspecto crucial em qualquer aplicação web. Ela garante que os dados enviados pelos usuários sejam consistentes, seguros e atendam aos requisitos do sistema. O Laravel oferece um sistema de validação robusto e intuitivo, permitindo que você defina regras de validação de forma simples e eficiente.

Neste artigo, exploraremos em detalhes o sistema de Laravel Validation, desde as regras básicas até as mais avançadas. Veremos como criar regras personalizadas, como exibir mensagens de erro de forma amigável e como integrar a validação em seus controladores e formulários.

Por que a validação é importante?

A validação de dados é importante por diversos motivos:

  • Segurança: Protege sua aplicação contra ataques como injeção de SQL e XSS.
  • Integridade dos dados: Garante que os dados armazenados no banco de dados estejam corretos e consistentes.
  • Melhora da experiência do usuário: Fornece feedback imediato ao usuário sobre os erros de validação.

Como funciona a validação no Laravel?

Laravel Validation: O Laravel fornece uma API fluente para definir regras de validação. Essas regras são aplicadas aos dados de entrada, e se alguma regra for violada, uma exceção será lançada.

Regras de validação básicas

O Laravel inclui uma ampla variedade de regras de validação prontas para uso, como:

  • required: O campo é obrigatório.
  • min: O campo deve ter no mínimo X caracteres.
  • max: O campo deve ter no máximo X caracteres.
  • email: O campo deve ser um endereço de e-mail válido.
  • unique: O valor do campo deve ser único em uma determinada tabela.

Exemplo:

PHP

$request->validate([
    'name' => 'required|min:3',
    'email' => 'required|email|unique:users',
    'password' => 'required|min:8',
]);

Customizando mensagens de erro

Você pode personalizar as mensagens de erro para cada regra de validação:

PHP

$messages = [
    'name.required' => 'O campo nome é obrigatório.',
    'email.unique' => 'Este endereço de e-mail já está em uso.',
];

$request->validate([
    'name' => 'required|min:3',
    'email' => 'required|email|unique:users',
    'password' => 'required|min:8'
], $messages);

Exibindo mensagens de erro nas views

Você pode exibir as mensagens de erro nas suas views usando o helper $errors:

HTML

@if ($errors->any())
    <div class="alert alert-danger">
        <ul>
            @foreach ($errors->all() as $error)
                <li>{{ $error }}</li>
            @endforeach
        </ul>
    </div>
@endif

Validação em Controllers

A forma mais comum de validar dados é nos controladores:

PHP

public function store(Request $request)
{
    $request->validate([
        'name' => 'required|min:3',
        'email' => 'required|email|unique:users',
        'password' => 'required|min:8'
    ]);

    return redirect()->route('login');
}

Validação em Requests

Você pode criar classes de request para encapsular a lógica de validação:

Bash

php artisan make:request StoreUserRequest

PHP

class StoreUserRequest extends FormRequest
{
    public function authorize()
    {
        return true;
    }

    public function rules()
    {
        return [
           'name' => 'required|min:3',
           'email' => 'required|email|unique:users',
           'password' => 'required|min:8'
        ];
    }
}

PHP

public function store(StoreUserRequest $request)
{    
    //Se não tiver erro de validação nos dados, salva usuário no banco de dados;
    return redirect()->route('login');
}

Regras de validação personalizadas

Regras de validação personalizadas permitem que você crie regras específicas para seus dados, que podem não estar disponíveis nas regras padrão do Laravel. Elas oferecem uma grande flexibilidade para validar dados de acordo com as necessidades do seu projeto.

Exemplo Prático: Validando um CPF

Vamos criar uma regra personalizada para validar um número de CPF brasileiro. Para isso, utilizaremos a biblioteca nicolaslopezj/cpf-validator que oferece uma validação robusta de CPFs.

1. Instalar a biblioteca:

Bash

composer require nicolaslopezj/cpf-validator

2. Exemplo com Mensagem de Erro Personalizada:

PHP

use Illuminate\Support\Facades\Validator;
use Nicolaslopezj\CPFValidator\CPFValidator;

public function store(Request $request)
{
    Validator::extend('cpf', function ($attribute, $value, $parameters, $validator) {
        return CPFValidator::isValid($value);
    })->replacer('cpf', 'CPF inválido');

    $request->validate([
        'cpf' => 'required|cpf',
    ]);

    //Segue a lógica do que fazer com esse dado;

}

Explicando o código:

  • Instalação da biblioteca: Adicionamos a biblioteca nicolaslopezj/cpf-validator ao nosso projeto para realizar a validação do CPF.
  • Criando a regra: A função Validator::extend() registra uma nova regra personalizada. A função de callback recebe o atributo, o valor, os parâmetros e o validador.
  • Utilizando a regra: Na validação do request, utilizamos a regra cpf criada anteriormente.
  • Mensagem de erro personalizada: O método replacer() permite definir uma mensagem de erro personalizada para a regra.

Conclusão

O sistema de validação do Laravel é uma ferramenta poderosa e flexível que permite garantir a integridade dos dados em suas aplicações. Ao dominar as diferentes formas de validação, você poderá criar aplicações mais seguras e robustas.

Neste artigo, exploramos os conceitos básicos de validação no Laravel, desde as regras básicas até a criação de regras personalizadas. Ao utilizar as ferramentas fornecidas pelo Laravel, você poderá:

  • Melhorar a segurança: Proteger sua aplicação contra ataques como injeção de SQL e XSS.
  • Melhorar a experiência do usuário: Fornecer feedback imediato sobre os erros de validação.
  • Aumentar a confiabilidade: Garantir que os dados armazenados em seu banco de dados sejam consistentes e precisos.

Mas antes de dominar o Laravel, se for o seu caso, toda jornada tem um início. Vamos entender quais são os conhecimentos básicos necessários para aproveitar ao máximo este poderoso framework. Para iniciar seus estudos no Laravel, você precisará dominar as seguintes tecnologias:

HTML
HTML
CSS
CSS
Javascript
JavaScript
SQL
SQL
Capa Curso PHP
PHP

E se você gosta do nosso conteúdo, não deixe de contribuir adquirindo os serviços e produtos dos nossos apoiadores e empresas que somos associados:

Hospedagem Hostinger
Ofertas Amazon
Amazon Prime
Author: Thiago Rossi