在404页面中显示异常错误消息

时间:2015-11-05 12:56:56

标签: php exception-handling laravel-5

我有一个控制器,我可以做这样的事情

return abort('401', 'User cannot be found');

如何在我的视图中访问该消息(errors / 401.blade.php)。

/************* 401.blade.php ***********/
{{ dd($exception) }}

如果我在我的视图中转储$ exception 我得到了这个

HttpException {#203 ▼
  -statusCode: "401"
  -headers: []
  #message: "User cannot be found"
  #code: 0
  #file: "C:\laravel\framework\src\Illuminate\Foundation\Application.php"
  #line: 882
  -trace: array:54 [▶]
}

如何访问消息变量?

1 个答案:

答案 0 :(得分:1)

好吧,在Laravel的文档中说:

  

自定义HTTP错误页面

     

Laravel可以轻松返回各种HTTP的自定义错误页面   状态代码。例如,如果您希望自定义错误页面   404 HTTP状态码,创建资源/ views / errors / 404.blade.php。   此文件将在您生成的所有404错误中提供   应用

     

应该命名此目录中的视图以匹配HTTP   他们对应的状态代码。

我认为你必须创建一个401.blade.php视图,然后你的代码才能运行。

如此处所示:https://stackoverflow.com/a/29633624/4425719

  

扩展Laravel的异常处理程序,   Illuminate\Foundation\Exceptions\Handler,并覆盖   使用您自己的renderHttpException(Symfony\Component\HttpKernel\Exception\HttpException $e)方法。

     

如果您还没有php artisan fresh,那么对您来说很容易。只是   编辑app/Exceptions/Handler.php,或创建新文件。

     

Handler.php

<?php namespace App\Exceptions;

use Exception;
use Illuminate\Foundation\Exceptions\Handler as ExceptionHandler;

use Symfony\Component\HttpKernel\Exception\HttpException;

class Handler extends ExceptionHandler {

  // ...

  protected function renderHttpException(HttpException $e) {
    $status = $e->getStatusCode();

    if (view()->exists("errors.{$status}")) {
      return response()->view("errors.{$status}", compact('e'), $status);
    }
    else {
      return (new SymfonyDisplayer(config('app.debug')))->createResponse($e);
    }
  }

}
     

然后,在$e中使用404.blade.php变量。

     

abort(404, 'Something not found');
     

并在404.blade.php

{{ $e->getMessage() }}
     

对于其他有用的方法,例如getStatusCode(),请参阅   Symfony\Component\HttpKernel\Exception