【问题标题】:How to return custom view for http error response in Laravel 5?如何在 Laravel 5 中为 http 错误响应返回自定义视图?
【发布时间】:2016-05-28 19:42:49
【问题描述】:

如何为每个 http 错误响应定义自定义视图文件,然后在我的应用程序中返回 http 错误响应时让 laravel 自动将该视图文件发送给用户?

【问题讨论】:

  • 你的意思是返回错误代码然后 Laravel 返回适当的自定义视图?

标签: php laravel exception laravel-5


【解决方案1】:

基本上你可以为每一个HTTP错误码定义一个页面,并把它放在resources/views/errors/

因此,如果您想为 404 HTTP 响应创建视图,您应该创建视图:

resources/views/errors/404.blade.php

Laravel 会自动将您的用户重定向到特定视图

此外,您可以自定义App\Exceptions\Handler 类,该类负责从异常中呈现错误:每次Exception 上升时都会调用render 方法,因此您可以拦截由HTTP 错误生成的HttpException 和重定向到任何你想要的地方:

public function render($request, Exception $e)
{
    //if $e is an HttpException
    if ($e instanceof HttpException ) {

        //get the status code 
        $status = $e->getStatusCode() ;

        //if status code is 501 redirect to custom view
        if( $status == 501 )
            return response()->view('my.custom.view', [], 501);
    }

    return parent::render($request, $e);
}

【讨论】:

  • 我可以像这样从我的控制器发送 501 错误吗:return response()->view('my.custom.view', [], 501);
  • @Salar : 是的,但是使用Handlerrender 方法将使其自动:每次在APP 内出现501 错误时,都会触发render 方法并且视图将与状态码一起显示。在您的情况下,您将手动返回视图并传递状态代码
  • 别忘了为 HttpException 指定命名空间:使用 Symfony\Component\HttpKernel\Exception\HttpException;
【解决方案2】:

.env 文件中的第一个 将 APP_DEBUG=true 更改为 APP_DEBUG=false
其次创建您的自定义文件并重命名为404.balde.php 并复制到

resources/views/errors/404.blade.php

【讨论】:

    猜你喜欢
    • 2021-01-08
    • 2018-05-17
    • 2020-10-11
    • 2019-09-30
    • 2018-01-29
    • 2017-04-28
    • 2015-05-06
    • 2018-03-01
    • 1970-01-01
    相关资源
    最近更新 更多