Il modo consigliato per scrivere la logica di convalida e autorizzazione è inserire tale logica in classi di richiesta separate. In questo modo il codice del controller rimarrà pulito.
È possibile creare una classe di richiesta eseguendo php artisan make:request SomeRequest
.
In ogni rules()
metodo della classe di richiesta, definisci le tue regole di convalida:
//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
]
];
}
Nel tuo controller scrivi la tua funzione di rotta in questo modo:
// 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.
}
Ogni classe di richiesta viene fornita con hook / metodi pre e post-convalida che possono essere personalizzati in base alla logica aziendale e a casi speciali per modificare il normale comportamento della classe di richiesta.
È possibile creare classi di richiesta padre per tipi simili di richieste (ad esempio web
e api
) richieste e quindi incapsulare una logica di richiesta comune in queste classi padre.
$request->validate([...])
. Verrà sollevata un'eccezione se i dati falliscono la convalida.