2013-07-31 19 views
11

Używam framework Laravel4 i natknąłem się na ten problem.Laravel: Jak odpowiedzieć niestandardowym błędem 404 w zależności od trasy

Chcę wyświetlić niestandardowy błąd 404 w zależności od żądanego adresu URL.

Na przykład:

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

i

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

Wartość '$something' nie jest ważne.

Ten przykład działa tylko z jednym segmentem, tj. 'site/foo' lub 'admin/foo'. Jeśli ktoś poprosi o podanie wartości 'site/foo/bar' lub 'admin/foo/bar' laravel, wyświetli domyślny błąd 404.

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

Próbowałem znaleźć coś w dokumentacji Laravel4, ale nic nie jest w sam raz dla mnie. Proszę o pomoc :)

Dziękujemy!

Odpowiedz

28

W 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); 
    } 
}); 

Pana zdaniem, można znaleźć $something z {{ Request::path(); }} lub {{ Request::segment(); }}

Nie
+0

miła dyskusja o tym na: http://blog.danharper.me/blog/2013/ 01/01/exceptions-in-laravel-4/ – ptim

+1

Ktoś ma zaktualizowaną wersję tego dla Laravel 5.5 ...? – Inigo

Powiązane problemy