我有一个控制器,我在做这样的事情
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。该文件将处理您的应用程序生成的所有404错误。
该目录中的视图应被命名为与它们所对应的HTTP状态代码相匹配。
我认为您必须创建一个401.blade.php
视图,然后您的代码才能工作。
如此处所示:https : //stackoverflow.com/a/29633624/4425719
用您自己的方法扩展Laravel的Exception Handler
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
。IE
abort(404, 'Something not found');
在你的
404.blade.php
{{ $e->getMessage() }}
有关其他有用的方法,例如
getStatusCode()
,请参见Symfony\Component\HttpKernel\Exception
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句