Laravel: как реагировать с пользовательской ошибкой 404 в зависимости от маршрута


Я использую фреймворк Laravel4 и столкнулся с этой проблемой.

Я хочу отобразить пользовательскую ошибку 404 в зависимости от запрошенного url.

Например:

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

И

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

Значение '$something' не имеет значения.

Приведенный пример работает только с одним сегментом, т. е. 'site/foo' или 'admin/foo'. Если кто-то запросит 'site/foo/bar' или 'admin/foo/bar' laravel выдаст ошибку default 404.

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

Я пытался найти что-то в документации Laravel4, но ничего не нашел. как раз для меня. Пожалуйста, помогите :)

Спасибо!

1 11

1 ответ:

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

На ваш взгляд, вы можете найти $something с {{ Request::path(); }} или {{ Request::segment(); }}