Как создать пользовательский просмотр ошибок в Lumen? Я попытался создать resources/views/errors/404.blade.php
, как то, что мы можем сделать в Laravel 5, но это не сработает.Создание пользовательской страницы ошибки в Lumen
ответ
Ошибки обрабатываются в пределах App\Exceptions\Handler
. Чтобы отобразить страницу 404 изменить render()
метод для этого:
public function render($request, Exception $e)
{
if($e instanceof NotFoundHttpException){
return response(view('errors.404'), 404);
}
return parent::render($request, $e);
}
и добавить в начало файла handler.php:
use Symfony\Component\HttpKernel\Exception\NotFoundHttpException;
Edit: Как @YiJiang указывает, ответ должен не только возвращать представление 404, но также содержать правильный код состояния. Поэтому view()
должен быть обернут в код response()
, переданный в 404
в качестве кода состояния. Как в отредактированном коде выше.
Это не работает для меня, но я получил его работать:
if($e instanceof \Symfony\Component\HttpKernel\Exception\NotFoundHttpException) {
return view('errors.404');
}
Вы также можете добавить
http_response_code(404)
сказать поисковым системам о состоянии страницы ,
The answer by lukasgeiterявляется почти правильно, но ответ сделал с функцией view
всегда будет выполнять код состояния 200
HTTP, который является проблематичным для поисковых роботов или любого пользовательского агента, который опирается на него.
В Lumen documentation пытается решить эту проблему, но код дается не работает, потому что он копируется из Laravel, и урезанная версия люмена из ResponseFactory
класса отсутствует метод view
.
Это код, который я использую в настоящее время.
use Symfony\Component\HttpKernel\Exception\HttpException;
[...]
public function render($request, Exception $e)
{
if ($e instanceof HttpException) {
$status = $e->getStatusCode();
if (view()->exists("errors.$status")) {
return response(view("errors.$status"), $status);
}
}
if (env('APP_DEBUG')) {
return parent::render($request, $e);
} else {
return response(view("errors.500"), 500);
}
}
Это предполагает, что вы имеете ваши ошибки хранятся в каталоге errors
под вашими взглядами.
Это прекрасно, спасибо –
- 1. Страницы пользовательской ошибки ASP.NET
- 2. Создание пользовательской ошибки волейбола
- 3. Создание пользовательской страницы ошибок в Symfony 2.5
- 4. Создание пользовательской страницы ошибок в apache
- 5. Реализация пользовательской страницы ошибки 404
- 6. Создание WordPress пользовательской php страницы
- 7. Создание уникальной пользовательской веб-страницы
- 8. Исключение в MasterPage страницы пользовательской ошибки
- 9. создание страницы ошибки -404
- 10. Создание «следующей страницы» в пользовательской форме
- 11. Практическое руководство. Страницы пользовательской ошибки Dnn
- 12. Создание пользовательской страницы входа php для Wordpress
- 13. Создание пользовательской CMS, как обрабатывать настройки страницы?
- 14. Magento 2 Создание пользовательской домашней страницы
- 15. Получение пустой страницы вместо пользовательской страницы ошибки 404?
- 16. Создание пользовательской страницы на WordPress и добавив в него содержимое
- 17. Как применить разбивку на страницы в Lumen?
- 18. отображение пользовательской страницы ошибки для 401 в Asp.Net MVC
- 19. Создание пользовательской страницы продукта в drupal 6 с помощью ubercart
- 20. Создание шаблона пользовательской страницы в трафарете для bigcommerce
- 21. Создание пользовательской культуры в ASP.NET
- 22. Lumen с Nginx возвращает белые страницы
- 23. Создание пользовательской функции окна
- 24. Lumen: Использование красноречиво Lumen Project
- 25. Создание пользовательской страницы ошибки для asp.net MVC 3, необходимо отключить http-модули
- 26. Реализация страницы пользовательской ошибки на веб-узле ASP.Net
- 27. AspxErrorPath в пользовательской странице ошибки
- 28. Ловушка пользовательской ошибки в питоне
- 29. Добавление пользовательской ошибки в Laravel?
- 30. Повышение пользовательской ошибки в Apigee
'использовать Symfony \ Component \ HttpKernel \ Exception \ NotFoundHttpException;', возможно, потребуется добавить, так как он находится в другом пространстве имен. (Комментарий от [Carlo V] (http://stackoverflow.com/users/1025467/carlo-v)) –
Это проблематично, потому что ваш ответ не будет содержать правильный код состояния HTTP. Документация Lumen обращается к этому, но это также неправильно, потому что оно скопировано из Laravel (у класса 'ResponseFactory' нет метода' view', который он делает в Laravel). Я закончил с ответом return (view («errors. $ Status») -> render(), $ status); ' –
Спасибо @YiJiang, вы потрясающий! – nXu