A maneira recomendada de escrever lógica de validação e autorização é colocar essa lógica em classes de solicitação separadas. Dessa forma, seu código de controlador permanecerá limpo.
Você pode criar uma classe de solicitação executando php artisan make:request SomeRequest
.
No rules()
método de cada classe de solicitação, defina suas regras de validação:
//SomeRequest.php
public function rules()
{
return [
"name" => [
'required',
'array', // input must be an array
'min:3' // there must be three members in the array
],
"name.*" => [
'required',
'string', // input must be of type string
'distinct', // members of the array must be unique
'min:3' // each string must have min 3 chars
]
];
}
Em seu controlador, escreva sua função de rota assim:
// SomeController.php
public function store(SomeRequest $request)
{
// Request is already validated before reaching this point.
// Your controller logic goes here.
}
public function update(SomeRequest $request)
{
// It isn't uncommon for the same validation to be required
// in multiple places in the same controller. A request class
// can be beneficial in this way.
}
Cada classe de solicitação vem com ganchos / métodos de pré e pós-validação que podem ser personalizados com base na lógica de negócios e casos especiais para modificar o comportamento normal da classe de solicitação.
Você pode criar classes de solicitação pai para tipos semelhantes de solicitações (por exemplo, web
e api
) solicitações e, em seguida, encapsular alguma lógica de solicitação comum nessas classes pai.
$request->validate([...])
. Uma exceção será gerada se os dados falharem na validação.