Eccoci di nuovo con le nostre guide Laravel, riprendiamo con Laravel Validation. Per comprendere il funzionamento della validazione si cercherà di costruire un esempio che prevede l’inserimento di un post e la successiva validazione dei campi di input.
Laravel Validation: definizione rotte
Prima di tutto si definiscono le rotte per la creazione e il salvataggio del post nel file routes/web.php:
Route::get('post/create', 'PostController@create'); Route::post('post', 'PostController@store');
Definizione Controller con Artisan
Poi si definisce il controller PostController con il comando Artisan:
php artisan make:controller PostController
Nella cartella app/Http/Controllers si trova il file PostController.php in cui si possono inserire i due metodi create() e store():
/* il metodo farà vedere il form che si trova in resources/views/post/create.blade.php */
return view(‘post.create’);
public function store(Request $request)
{
/* dentro questo metodo va inserita la logica di validazione dei dati provenienti dal form */
}
Nel metodo store() si può inserire la logica di validazione facendo ricorso al metodo validate() dell’oggetto Illuminate\Http\Request. Se i dati rispettano le regole di validazione viene eseguita l’altra parte del codice altrimenti viene sollevata un’eccezione e viene generata una risposta di redirect che fa tornare l’utente alla precedente posizione.
[…] public function store(Request $request) { $this->validate( [ ‘title’=>’required’, ‘body’=>’required’ ] ); /* se la validazione non fallisce viene eseguito il resto del codice */ } […]
Se per esempio il campo title del form che si trova nel file resources/views/post/create.blade.php dovesse rispettare qualche altra regola di validazione (per esempio essere composto al massimo di 255 caratteri) si potrebbe riscrivere il metodo nel seguente modo:
[…]
public function store(Request $request)
{
$this->validate(
[
‘title’=>’required|max:255’,
‘body’=>’required’
]
);
/* se la validazione non fallisce viene eseguito il resto del codice */
}
[…]
Come si può notare, si aggiunge l’altra regola di validazione facendo ricorso al carattere |.
Per tutte le regole di validazione si può fare riferimento alla guida ufficiale di Laravel
Se la validazione fallisce l’utente viene reindirizzato al form di creazione del post con tutti gli errori di validazione. Per accedere agli errori di validazione si può inserire nel form di creazione del post (in resources/views/post/create.blade.php) la seguente porzione di codice:
@if ($errors->any()) <ul> @foreach ($errors->all() as $error) <li>{{ $error }}</li> @endforeach </ul> @endif
Scegli uno dei nostri corsi Laravel