Kus*_*adi 7 laravel blade lumen
如何为Lumen上的错误创建自定义视图?我尝试创建resources/views/errors/404.blade.php,就像我们在Laravel 5中可以做的那样,但它不起作用.
luk*_*ter 16
错误在其中处理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);
}
Run Code Online (Sandbox Code Playgroud)
并将其添加到Handler.php文件的顶部:
use Symfony\Component\HttpKernel\Exception\NotFoundHttpException;
Run Code Online (Sandbox Code Playgroud)
编辑:正如@YiJiang指出的那样,响应不仅要返回404视图,还要包含正确的状态代码.因此view()应该包含response()在404作为状态代码传入的调用中.就像上面编辑的代码一样.
Yi *_*ang 11
lukasgeiter的答案几乎是正确的,但是使用该view函数做出的响应将始终带有200HTTP状态代码,这对于爬虫或依赖它的任何用户代理来说都是有问题的.
该流明文档试图解决这个问题,但因为它是从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);
}
}
Run Code Online (Sandbox Code Playgroud)
这假设您将错误存储在errors视图下的目录中.
| 归档时间: |
|
| 查看次数: |
6340 次 |
| 最近记录: |