我有一个控制器,我可以在其中执行类似的操作
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 [▶]
}
如何访问消息变量?
好吧,在Laravel文档中这样说:
自定义HTTP错误页面
Laravel使返回各种HTTP的自定义错误页面变得容易状态代码。例如,如果您希望自定义404 HTTP状态代码,创建resources/views/errors/404.blade.php。此文件将在您的应用
应命名此目录中的视图以匹配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); } } }
然后,在
404.blade.php
中使用$e
变量。即
abort(404, 'Something not found');
以及在您的
404.blade.php
中{{ $e->getMessage() }}
有关
getStatusCode()
等其他有用方法,请参阅Symfony'Component'HttpKernel'Exception