2013-07-31 1 views
11

Sto utilizzando il framework Laravel4 e ho trovato questo problema.Laravel: Come rispondere con errore 404 personalizzato in base al percorso

Desidero visualizzare un errore 404 personalizzato in base all'URL richiesto.

Ad esempio:

Route::get('site/{something}', function($something){ 
    return View::make('site/error/404'); 
}); 

e

Route::get('admin/{something}', function($something){ 
    return View::make('admin/error/404'); 
}); 

Il valore di '$something' non è importante.

L'esempio illustrato funziona solo con un segmento, ad esempio 'site/foo' o 'admin/foo'. Se qualcuno richiede 'site/foo/bar' o 'admin/foo/bar' laravel genererà l'errore 404 predefinito.

App::missing(function($exception){ 
    return '404: Page Not Found'; 
}); 

Ho cercato di trovare qualcosa nella documentazione di Laravel4 ma nulla è giusto per me. Per favore aiuto :)

Grazie!

risposta

28

In app/start/global.php

App::missing(function($exception) 
{ 
    if (Request::is('admin/*')) 
    { 
     return Response::view('admin.missing',array(),404); 
    } 
    else if (Request::is('site/*')) 
    { 
     return Response::view('site.missing',array(),404); 
    } 
    else 
    { 
     return Response::view('default.missing',array(),404); 
    } 
}); 

Secondo lei, è possibile trovare $something con {{ Request::path(); }} o {{ Request::segment(); }}

Ci
+0

una bella discussione di questo a: http://blog.danharper.me/blog/2013/ 01/01/exceptions-in-laravel-4/ – ptim

+1

Qualcuno ha una versione aggiornata di questo per Laravel 5.5 ...? – Inigo