将自定义消息(或任何其他数据)传递给 Laravel 404.blade.php
Pass a custom message (or any other data) to Laravel 404.blade.php
我正在使用 Laravel 5,并且我在
中创建了一个文件 404.blade.php
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);
});
如何全局共享一个变量?
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
扩展 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
(注:复制自my answer here。)
在Laravel 5中,您可以为/resources/views/errors
目录中的每个响应代码提供Blade视图。例如 404 错误将使用 /resources/views/errors/404.blade.php
.
手册中没有提到的是,在视图中您可以访问 $exception
对象。因此,您可以使用 {{ $exception->getMessage() }}
获取传递给 abort()
的消息。
我正在使用 Laravel 5,并且我在
中创建了一个文件404.blade.php
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);
});
如何全局共享一个变量?
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
扩展 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
(注:复制自my answer here。)
在Laravel 5中,您可以为/resources/views/errors
目录中的每个响应代码提供Blade视图。例如 404 错误将使用 /resources/views/errors/404.blade.php
.
手册中没有提到的是,在视图中您可以访问 $exception
对象。因此,您可以使用 {{ $exception->getMessage() }}
获取传递给 abort()
的消息。