Change TimeZone dynamically in laravel

荒凉一梦 提交于 2019-12-23 07:31:29

问题


In my project there is drop-down of time zones(PT,CST etc), when Admin changes the timezone from drop-down the admin panel reflects the timezone from the selected drop down.
How to change Config/app.php "timezone"( Application Timezone) according to the selected option.


回答1:


You can use Laravel helper function config to set timezone. However, this will affects only the request you will receive.

config(['app.timezone' => $timezone]);

If your goal is to change once the timezone and run on every request then what about saving the changed timezone in DB or in a file. Then, write a query for DB or read a file in app/config.php and change the value of index timezone in a file.

For example (file example):

When you changed the timezone it saves in a file.

file_put_contents("path/to/file", $timezone);

And, in app/config.php

$timezone= file_get_contents("path/to/file");
return [
 . . .   
    'timezone' => $timezone,
 . . .
]



回答2:


you need also call date_default_timezone_set

    config(['app.timezone' => $timezone]);
    date_default_timezone_set($timezone);



回答3:


If you want to keep a new time zone for all future requests, you need to use a package like larapack/config-writer to be able to save the time zone to the app config file.

Another way to handle this is to keep time zone in DB, fetch it in every request and set it with config(['app.timezone' => $timezone]) dynamically.




回答4:


You can use middleware to achieve this, whichever routes you will write mention all those applying with that middleware.
You can fetch that data from database and apply it like as follows,

config('app.timezone', 'your selected timezone')


来源:https://stackoverflow.com/questions/47938368/change-timezone-dynamically-in-laravel

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!