5

Secondo laravel 4 docs posso buttare un 404 con una risposta personalizzata:laravel 4 - Gestione 404s con messaggi personalizzati

App::abort(404, 'My Message'); 

Posso quindi gestire tutti i miei 404s con una pagina personalizzata:

App::missing(function($exception) 
{ 
    return Response::view('errors.missing', array(), 404); 
}); 

Come posso passare "My Message" alla vista nello stesso modo della pagina di errore generica di Laravel.

Grazie!

+0

@totymedli Volevo specificare il messaggio nella funzione "abort", piuttosto che nel gestore generico, così posso usare più messaggi. Mi mancava solo la riga '$ exception-> getMessage()'. Grazie per l'aiuto. –

risposta

5

Si può prendere il vostro messaggio attraverso il parametro Exception

App::missing(function($exception) 
{ 
    $message = $exception->getMessage(); 
    $data = array('message', $message); 
    return Response::view('errors.missing', $data, 404); 
}); 

Nota: il codice può essere ridotto, l'ho scritto in questo modo per motivi di chiarezza.

+0

Esattamente quello che stavo cercando! Grazie mille. –

+0

In quale file (s) e cartella (s) devi aggiungere questo codice, @LukeJoyce ?? – Pathros

+0

@pathros, se si utilizza Laravel 4.x questo dovrebbe essere su 'app.php', penso che sia simile per Laravel 5. –

5

In Laravel 5, è possibile fornire viste Blade per ciascun codice di risposta nella directory /resources/views/errors. Ad esempio un errore 404 utilizzerà /resources/views/errors/404.blade.php.

Ciò che non è menzionato nel manuale è che all'interno della vista si ha accesso all'oggetto $exception. Quindi puoi usare {{ $exception->getMessage() }} per ottenere il messaggio che hai passato in abort().

+1

Non può essere svitato abbastanza. Mi piace Laravel, ma l'approccio "leggi la struttura" alla documentazione può essere un po 'frustrante. – Henrik