Laravel在维护模式下显示自定义消息

时间:2016-09-10 02:29:46

标签: laravel laravel-5.3

我正在查看维护模式的Laravel文档:

https://laravel.com/docs/5.3/configuration#maintenance-mode

执行命令php artisan down时,它会将应用程序置于维护模式,并返回503.blade.php视图。

效果很好,但有一个选项我无法真正开展工作......当我这样做时:

php artisan down --message='Upgrading Database' --retry=60

我想在视图中显示消息,我尝试使用{{ $message }}访问显而易见的选择但没有成功,返回未定义的变量。

我的问题是:如何访问它?

3 个答案:

答案 0 :(得分:29)

实际上你并不需要那个" json_decode"东西,因为所有"错误"视图(包括503.blade.php)包含$exception变量。

因此,您可以在视图中使用{{ $exception->getMessage() }},然后您将获得传递给artisan down --message命令的确切值。

答案 1 :(得分:12)

默认情况下503.blade.php视图不会使用此消息。

此消息在名为storage/framework/down generated by php artisan down命令的JSON格式文件中可用。

您可以执行以下操作直接访问视图中的消息:

{{ json_decode(file_get_contents(storage_path('framework/down')), true)['message'] }}

更简洁的方法是使用$exception变量,并在this answer中建议的{{ $exception->getMessage() }}中加入CheckForMaintanceMode

在幕后,MaintanceModeException中间件会读取message and other data from the file并使用此数据抛出std::cout << std::setw(15) << std::left << "Bill"; std::cout << std::setw(15) << std::right << std::fixed << std::setprecision(2) << bill << std::endl; std::cout << std::setw(15) << std::left << "Tax @ 10.5%"; std::cout << std::setw(15) << std::right << std::fixed << std::setprecision(2) << tax << std::endl;

答案 2 :(得分:3)

如果您需要维护页面上的详细信息(而不仅仅是消息),您还可以使用IllegalStateException(Int),$exception->retryAfter(碳)和$e->willBeAvailableAt(碳)。 当然,您需要在artisan命令中设置 - 重试参数。