Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/227.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何在Laravel 5中返回http错误响应的自定义视图?_Php_Laravel_Exception_Laravel 5 - Fatal编程技术网

Php 如何在Laravel 5中返回http错误响应的自定义视图?

Php 如何在Laravel 5中返回http错误响应的自定义视图?,php,laravel,exception,laravel-5,Php,Laravel,Exception,Laravel 5,当我在应用程序中返回http错误响应时,如何为每个http错误响应定义自定义视图文件,然后让laravel自动将该视图文件发送给用户?基本上,您可以为每个http错误代码定义一个页面,并将其放入资源/views/errors/ 因此,如果要为404 HTTP响应创建视图,则应创建以下视图: resources/views/errors/404.blade.php Laravel会自动将用户重定向到特定视图 此外,您可以自定义负责呈现异常错误的App\Exceptions\Handler类:每当

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

基本上,您可以为每个http错误代码定义一个页面,并将其放入
资源/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);
}

.env
文件中的第一个 将
APP_DEBUG=true
更改为
APP_DEBUG=false

然后创建自定义文件并重命名为
404.balde.php
并复制到

resources/views/errors/404.blade.php

您的意思是返回错误代码,然后Laravel返回您的自定义视图?我可以像这样从控制器发送501错误:返回响应()->View('my.custom.View',[],501)@萨拉尔:是的,但是使用
处理程序的
渲染
方法将使其自动:每当应用程序内部出现501错误时,就会触发
渲染
方法,并且视图将与状态代码一起显示。在您的情况下,您将手动返回视图并传递状态代码。不要忘记为HttpException指定名称空间:使用Symfony\Component\HttpKernel\Exception\HttpException;