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

Laravel display a custom message in Maintenance Mode

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

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

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

效果很好,但有一个选项我真的做不到。当我做的时候:

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

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

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

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

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

您可以这样做来直接访问您视图中的消息:

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

更简洁的方法是使用 $exception 变量并在您的视图中包含 {{ $exception->getMessage() }},就像 中建议的那样。

在幕后,CheckForMaintanceMode 中间件读取 message and other data from the file 并使用此数据抛出 MaintanceModeException

编辑: 在 Laravel 8 之后,创建 storage/framework/down 命令的负载发生了变化,但没有 include the exception message。您应该在 Laravel 8+.

上使用 {{ $exception->getMessage() }}

实际上你不需要 "json_decode" 东西,因为所有 "error" 视图(包括 503.blade.php)都有 $exception 变量。

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

如果您想在维护页面上获得详细信息(不仅仅是消息),您还可以使用 $exception->retryAfter(Int)、$e->willBeAvailableAt(Carbon) 和 $e->wentDownAt(Carbon) . 当然你需要在artisan命令中设置--retry参数。