我有一个控制器,我可以做这样的事情
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 [▶]
}
如何访问消息变量?
答案 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