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 выдаст ошибку 404 по умолчанию.

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

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

Спасибо!


person bulicmatko    schedule 31.07.2013    source источник


Ответы (1)


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

По вашему мнению, вы можете найти $something с {{ Request::path(); }} или {{ Request::segment(); }}

person user1669496    schedule 31.07.2013
comment
Хорошее обсуждение этого вопроса: blog.danharper .me / blog / 2013/01/01 / exceptions-in-laravel-4. - person ptim; 28.05.2014
comment
У кого-нибудь есть обновленная версия для Laravel 5.5 ...? - person Inigo; 04.10.2017