O Laravel oferece uma abordagem elegante para validar dados de solicitação HTTP usando Form Requests. Essas classes especializadas simplificam o processo de validação, melhoram a legibilidade do código e ajudam a manter a integridade dos dados. Vamos explorar como criar e utilizar Form Requests para validar dados em um aplicativo Laravel.
1. Criando um Form Request:
Use o Artisan para criar um novo Form Request:
php artisan make:request MeuFormRequest
Isso criará um arquivo em app/Http/Requests/MeuFormRequest.php.
2. Definindo Regras de Validação:
Dentro do arquivo do Form Request, você pode definir as regras de validação no método rules().
// app/Http/Requests/MeuFormRequest.php
namespace App\Http\Requests;
use Illuminate\Foundation\Http\FormRequest;
class MeuFormRequest extends FormRequest
{
public function rules()
{
return [
'nome' => 'required|string|max:255',
'email' => 'required|email|unique:usuarios|max:255',
'idade' => 'required|integer|min:18',
];
}
}
3. Utilizando o Form Request em um Controlador:
No controlador onde você deseja realizar a validação, adicione o Form Request como uma dependência no método.
// app/Http/Controllers/MeuController.php
namespace App\Http\Controllers;
use App\Http\Requests\MeuFormRequest;
class MeuController extends Controller
{
public function store(MeuFormRequest $request)
{
// Os dados já foram validados neste ponto
// Execute a lógica de armazenamento ou processamento aqui
}
}
4. Retornando Mensagens Personalizadas:
Você pode personalizar as mensagens de erro no método messages() do seu Form Request.
// app/Http/Requests/MeuFormRequest.php
public function messages()
{
return [
'nome.required' => 'O campo nome é obrigatório.',
'email.required' => 'O campo email é obrigatório.',
'idade.min' => 'A idade mínima permitida é 18 anos.',
];
}
5. Executando a Validação Manualmente:
Se você precisar executar a validação manualmente em algum ponto do seu código, pode fazer isso chamando o método validate() no seu Form Request.
// app/Http/Controllers/OutroController.php
use App\Http\Requests\MeuFormRequest;
public function outraAcao(MeuFormRequest $request)
{
$request->validate();
// Continue com a lógica do controlador
}
6. Considerações Importantes:
- Autorização: Além da validação, os Form Requests também podem ser usados para autorização. Defina a lógica de autorização no método authorize() do seu Form Request.
- Middleware Automático: Os Form Requests são automaticamente injetados no pipeline de middleware pelo Laravel, garantindo que a validação seja executada antes da lógica do controlador.
- Regras de Validação: Consulte a documentação oficial do Laravel para explorar todas as regras de validação disponíveis.
Conclusão:
Os Form Requests no Laravel proporcionam uma maneira elegante de validar dados de solicitação. Ao encapsular a lógica de validação em classes dedicadas, você torna seu código mais organizado, reutilizável e fácil de manter. Além disso, a integração nativa com o pipeline de middleware do Laravel simplifica a aplicação de validação em seus aplicativos web.