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, webe 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.