Laravel维护模式刷新和渲染参数
Laravel maintenance mode refresh and render parameter
我正在尝试通过 php artisan down
将我的应用程序置于维护模式。
php artisan down --refresh=5
工作正常,我的浏览器在 5 秒后刷新
如果我想使用 php artisan down --render="maintenance.index"
呈现自定义维护视图,它会像我希望的那样呈现位于 resources/views/maintenance/index.blade.php
的视图。
但是当我像这样使用两个参数时
php artisan down --render="maintenance.index" --refresh=5
它只是呈现自定义视图,但在 5 秒后没有刷新。我想也许我输入参数的顺序很重要。但这两种方式都行不通。
php artisan down --refresh=5 --render="maintenance.index"
是否可以在不编辑默认 503.blade.php
文件的情况下将我的应用程序置于维护模式,呈现自定义视图并每 5 秒刷新一次页面?
如果您随时需要 5 秒的时间来查看自定义维护视图,只需添加 refresh
html 标签
<head>
<title>{{ config('app.name') }}</title>
<meta charset="utf-8">
<meta http-equiv="refresh" content="5">
</head>
最重要的是,我不确定 laravel 中的 refresh
属性发生了什么变化以在您的模板中动态应用它,但稍后我会进一步调查今天。
编辑 1:
Laravel 存储维护模式的存根文件,但我找不到影响 refresh
参数和 render
.
的结果
但是我找到了一个解决方法来归档相同的内容。 refresh
属性位于 $_SERVER['argv']
环境变量中,可以轻松解析并添加到您的 blade 视图中:
@php
$result = array_values(preg_grep('/(--refresh)/', array_values( $_SERVER['argv'] ) ));
if(!empty($result)){
$refresh = substr($result[0], strpos($result[0], "=") + 1);
}
@endphp
<!DOCTYPE html>
<html lang="en">
<head>
<title>{{ config('app.name') }}</title>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta name="csrf-token" content="{{ csrf_token() }}">
@if(isset($refresh))
<meta http-equiv="refresh" content="{{$refresh}}">
@endif
<!-- Fonts -->
<link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Nunito:wght@400;600;700&display=swap">
<!-- Styles -->
<link rel="stylesheet" href="{{ asset('css/app.css') }}">
<!-- Scripts -->
<script src="{{ asset('js/app.js') }}" defer></script>
</head>
<body>
<!-- your content here... -->
</body>
</html>
编辑 2:
这个issue is now fixed in Laravel PR [8.x] Fix refresh during down #42217
我正在尝试通过 php artisan down
将我的应用程序置于维护模式。
php artisan down --refresh=5
工作正常,我的浏览器在 5 秒后刷新
如果我想使用 php artisan down --render="maintenance.index"
呈现自定义维护视图,它会像我希望的那样呈现位于 resources/views/maintenance/index.blade.php
的视图。
但是当我像这样使用两个参数时
php artisan down --render="maintenance.index" --refresh=5
它只是呈现自定义视图,但在 5 秒后没有刷新。我想也许我输入参数的顺序很重要。但这两种方式都行不通。
php artisan down --refresh=5 --render="maintenance.index"
是否可以在不编辑默认 503.blade.php
文件的情况下将我的应用程序置于维护模式,呈现自定义视图并每 5 秒刷新一次页面?
如果您随时需要 5 秒的时间来查看自定义维护视图,只需添加 refresh
html 标签
<head>
<title>{{ config('app.name') }}</title>
<meta charset="utf-8">
<meta http-equiv="refresh" content="5">
</head>
最重要的是,我不确定 laravel 中的 refresh
属性发生了什么变化以在您的模板中动态应用它,但稍后我会进一步调查今天。
编辑 1:
Laravel 存储维护模式的存根文件,但我找不到影响 refresh
参数和 render
.
但是我找到了一个解决方法来归档相同的内容。 refresh
属性位于 $_SERVER['argv']
环境变量中,可以轻松解析并添加到您的 blade 视图中:
@php
$result = array_values(preg_grep('/(--refresh)/', array_values( $_SERVER['argv'] ) ));
if(!empty($result)){
$refresh = substr($result[0], strpos($result[0], "=") + 1);
}
@endphp
<!DOCTYPE html>
<html lang="en">
<head>
<title>{{ config('app.name') }}</title>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta name="csrf-token" content="{{ csrf_token() }}">
@if(isset($refresh))
<meta http-equiv="refresh" content="{{$refresh}}">
@endif
<!-- Fonts -->
<link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Nunito:wght@400;600;700&display=swap">
<!-- Styles -->
<link rel="stylesheet" href="{{ asset('css/app.css') }}">
<!-- Scripts -->
<script src="{{ asset('js/app.js') }}" defer></script>
</head>
<body>
<!-- your content here... -->
</body>
</html>
编辑 2:
这个issue is now fixed in Laravel PR [8.x] Fix refresh during down #42217