【问题标题】:Difference among return view(), return response()->view() and abort() in laravellaravel 中 return view()、return response()->view() 和 abort() 的区别
【发布时间】:2016-10-01 18:29:32
【问题描述】:

假设我想从控制器的方法中返回 404 错误视图,并且我有这段代码。

try {

        file_get_contents('http://www.somewebsite.com');

    } 
catch (\Exception $e) {

        return view('errors.404'); // View::make('errors.404');

        // or                       

        return response()->view('errors.404'); // Response::view('errors.404');

        // or

        abort(404); // App::abort(404);

    }

每次我都会看到相同的 404 视图输出。这是我的问题。

view()、response()->view()和abort()有什么区别?

它们的特殊用例是什么?

【问题讨论】:

    标签: php laravel laravel-4 laravel-5 laravel-5.1


    【解决方案1】:

    当您使用 view() 或 response()->view() 时,您的客户端收到的 HTTP 响应代码将为 200 aka OK。使用 abort(404) 时,代码将是 404 NOT FOUND!

    【讨论】:

      【解决方案2】:

      view() 只是response()->view() 的简写

      response()->view() 返回状态码为 200 的指定视图,但您可以通过多种方式修改响应。例如设置其他标题或其他状态代码,如 301。

      abort() 会抛出 NotFoundHttpException 或 HttpException 并让 Laravel 查找名称与 views/errors 中相应代码类似的视图,因此您不必自己指定视图。

      【讨论】:

      • 但是所有那些返回相同的输出。为什么我不能一直使用 view()?
      • @Prs 因为错误页面发送到浏览器的状态码。对用户来说不是必需的,但对搜索引擎来说是必需的。您不必使用abort(),但您应该
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-10-03
      • 2013-06-02
      • 2021-06-01
      • 2022-12-05
      • 2014-03-24
      • 2014-05-01
      相关资源
      最近更新 更多