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, но для меня ничего нет.
Пожалуйста, помогите:)
Спасибо!
Ответы
Ответ 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(); }}