我使用的是Laravel 5,并且我已经在
views/errors/404.blade.php
这个文件会在我每次调用以下命令时呈现:
abort(404); // alias of App::abort(404);
如何传递自定义消息?在404.blade.php
中类似这样的内容
Sorry, {{ $message }}
填充者(示例):
abort(404, 'My custom message');
或
abort(404, array(
'message' => 'My custom message'
));
在Laravel 4中,可以使用App::missing
App::missing(function($exception)
{
$message = $exception->getMessage();
$data = array('message', $message);
return Response::view('errors.404', $data, 404);
});
发布于 2015-12-06 07:13:38
(注:复制自my answer here。)
在Laravel5中,您可以为/resources/views/errors
目录中的每个响应代码提供刀片视图。例如,404错误将使用/resources/views/errors/404.blade.php
。
手册中没有提到的是,在视图内部,您可以访问$exception
对象。因此,您可以使用{{ $exception->getMessage() }}
来获取传递给abort()
的消息。
发布于 2015-04-15 01:21:29
扩展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
发布于 2015-03-20 17:57:16
全局共享一个变量怎么样?
view()->share('message', 'llnk has gone away');
// or using the facade
View::share('message', 'llnk has gone away badly');
只要确保在模板中回退到默认值,以防您忘记设置它。
请参阅与视图共享数据:http://laravel.com/docs/5.0/views
https://stackoverflow.com/questions/29163564
复制相似问题