Ao desenvolver uma aplicação web robusta, os programadores frequentemente precisam validar dados recebidos dos utilizadores para garantir a integridade e a segurança dos dados. No Laravel, este processo de validação é simplificado através do uso de classes de Request personalizadas. Neste capítulo, vamos explorar como atualizar o código das funções de validação de dados utilizando as classes StoreProdutoRequest
e UpdateProdutoRequest
, que estendem FormRequest
.
Implementação de StoreProdutoRequest e UpdateProdutoRequest
Em Laravel, FormRequest
é uma classe que fornece uma abordagem limpa para validar os dados das requisições HTTP recebidos pela aplicação. Estas classes já foram criadas no nosso projeto ao criarmos os modelos. Vamos agora configurar cada uma destas classes para definir as regras de validação específicas para as requisições de criação e atualização de produtos.
Atualizar o StoreProdutoRequest
Abra app/Http/Requests/StoreProdutoRequest.php
e modifique-o para incluir as regras de validação necessárias para a criação de um novo produto.
namespace App\Http\Requests;
use Illuminate\Foundation\Http\FormRequest;
class StoreProdutoRequest extends FormRequest
{
public function authorize()
{
return true; // Permite que todas as requisições sejam autorizadas.
}
public function rules()
{
return [
'code' => 'required|string|max:50|unique:produtos,code',
'name' => 'required|string|max:250',
'quantity' => 'required|integer|min:1|max:10000',
'price' => 'required|numeric|gt:0',
'description' => 'nullable|string'
];
}
}
Atualizar o UpdateProdutoRequest
Agora, vamos configurar UpdateProductRequest
para tratar a validação dos dados ao atualizar um produto existente.
Abra app/Http/Requests/UpdateProdutoRequest.php
e aplique as seguintes alterações:
<?php
namespace App\Http\Requests;
use Illuminate\Foundation\Http\FormRequest;
class UpdateProdutoRequest extends FormRequest
{
public function authorize()
{
return true; // Permite que todas as requisições sejam autorizadas.
}
public function rules()
{
return [
'code' => 'required|string|max:50|unique:produtos,code,'.$this->produto->id,
'name' => 'required|string|max:250',
'quantity' => 'required|integer|min:1|max:10000',
'price' => 'required|numeric|gt:0',
'description' => 'nullable|string'
];
}
}
Explicação das Regras de Validação
As regras de validação que definimos incluem:
-
code
: é obrigatório, deve ser uma string, não pode ultrapassar os 50 caracteres e dentro da tabela produtos é única. -
name
: é obrigatório, deve ser uma string e não pode ultrapassar os 255 caracteres. -
description
: é opcional (nullable) e deve ser uma string. -
price
: é obrigatório, deve ser um número e maior do que 0. -
quantity
: é obrigatório, deve ser um número inteiro entre 1 e 10000.
Estas regras garantem que quaisquer dados inseridos pelos utilizadores são verificados quanto à sua integridade antes de serem processados pela aplicação.
Resumo
Neste capítulo, aprendemos como utilizar as classes de Request personalizadas StoreProductRequest
e UpdateProductRequest
para validar dados em Laravel. Esta abordagem não só melhora a integridade dos dados, como também simplifica a manutenção e leitura do código.