在 laravel 动态更改时区
Change TimeZone dynamically in laravel
在我的项目中有时区下拉菜单(PT、CST 等),当管理员从下拉菜单中更改时区时,管理面板会反映所选下拉菜单中的时区。
如何根据所选选项更改 Config/app.php "timezone"(应用程序时区)。
如果你想为所有未来的请求保留一个新的时区,你需要使用像 larapack/config-writer 这样的包来将时区保存到 app
配置文件中。
处理这个问题的另一种方法是在数据库中保留时区,在每个请求中获取它并使用 config(['app.timezone' => $timezone])
动态设置它。
您可以使用 middleware
来实现这一点,无论您将编写哪条路由,请提及所有应用该中间件的路由。
您可以从数据库中获取该数据并按如下方式应用它,
config('app.timezone', 'your selected timezone')
你还需要打电话给date_default_timezone_set
config(['app.timezone' => $timezone]);
date_default_timezone_set($timezone);
您可以使用 Laravel 辅助函数 config
来设置时区。但是,这只会影响您将收到的请求。
config(['app.timezone' => $timezone]);
如果您的目标是在每次请求时更改一次时区和 运行 那么如何将更改后的时区保存在数据库或文件中呢?然后,在app/config.php中写一个DB查询或读取一个文件,并在一个文件中更改index timezone的值。
例如(文件示例):
当您更改时区时,它会保存在一个文件中。
file_put_contents("path/to/file", $timezone);
并且,在 app/config.php
$timezone= file_get_contents("path/to/file");
return [
. . .
'timezone' => $timezone,
. . .
]
您可以使用服务提供商。
这样,您首先需要从数据库中获取设置信息,然后在配置文件中更改设置。
Config::set('app.timezone', $db['timezone'] ?? config('app.timezone'));
在我的项目中有时区下拉菜单(PT、CST 等),当管理员从下拉菜单中更改时区时,管理面板会反映所选下拉菜单中的时区。
如何根据所选选项更改 Config/app.php "timezone"(应用程序时区)。
如果你想为所有未来的请求保留一个新的时区,你需要使用像 larapack/config-writer 这样的包来将时区保存到 app
配置文件中。
处理这个问题的另一种方法是在数据库中保留时区,在每个请求中获取它并使用 config(['app.timezone' => $timezone])
动态设置它。
您可以使用 middleware
来实现这一点,无论您将编写哪条路由,请提及所有应用该中间件的路由。
您可以从数据库中获取该数据并按如下方式应用它,
config('app.timezone', 'your selected timezone')
你还需要打电话给date_default_timezone_set
config(['app.timezone' => $timezone]);
date_default_timezone_set($timezone);
您可以使用 Laravel 辅助函数 config
来设置时区。但是,这只会影响您将收到的请求。
config(['app.timezone' => $timezone]);
如果您的目标是在每次请求时更改一次时区和 运行 那么如何将更改后的时区保存在数据库或文件中呢?然后,在app/config.php中写一个DB查询或读取一个文件,并在一个文件中更改index timezone的值。
例如(文件示例):
当您更改时区时,它会保存在一个文件中。
file_put_contents("path/to/file", $timezone);
并且,在 app/config.php
$timezone= file_get_contents("path/to/file");
return [
. . .
'timezone' => $timezone,
. . .
]
您可以使用服务提供商。 这样,您首先需要从数据库中获取设置信息,然后在配置文件中更改设置。
Config::set('app.timezone', $db['timezone'] ?? config('app.timezone'));