Dopo l'aggiornamento a Laravel 5.2 ho riscontrato un problema con il validatore laravel. Quando voglio convalidare i dati in un controller, prendi ad esempio questo codice.Il validatore Laravel genera un'eccezione invece di reindirizzare indietro
<?php
namespace App\Http\Controllers;
use App\Http\Controllers\Controller;
class ContactController extends Controller
{
public function storeContactRequest(Request $request)
{
$this->validate($request, [
'_token' => 'required',
'firstname' => 'required|string'
'lastname' => 'required|string'
'age' => 'required|integer',
'message' => 'required|string'
]);
// Here to store the message.
}
}
Ma in qualche modo quando entro i dati caduca che non mi reindirizzare torna alla pagina precedente e lampeggia alcuni messaggi alla sessione, ma innescherà un'eccezione e mi dà una pagina di errore 500 indietro.
Questa è l'eccezione che ottengo. Ho letto nella documentazione che ValidationException è nuovo invece di HttpResponseException ma non so se ha qualcosa a che fare con questo.
[2016-01-05 11:49:49] production.ERROR: exception 'Illuminate\Foundation\Validation\ValidationException' with message 'The given data failed to pass validation.' in /home/vagrant/Code/twentyre-webshop/vendor/laravel/framework/src/Illuminate/Foundation/Validation/ValidatesRequests.php:70
E quando uso una classe di richiesta separata, verrà reindirizzato nuovamente con i messaggi di errore. Mi sembra che solo il metodo di validazione utilizzato in un controller sia influenzato da questo comportamento.
Questo è di progettazione. Le classi di richieste eseguono il reindirizzamento, se si convalida manualmente utilizzando il metodo ValidatesRequests trait e validate() necessario per rilevare l'eccezione e gestirla autonomamente. –
Ma come faccio a rilevare l'eccezione quando la uso in questo modo in un controller? – DB93
Avvolgilo nella clausola try/catch –