Изменение часового пояса динамически в фреймворк Laravel

в моем проекте есть раскрывающийся список часовых поясов (PT,CST и т. д.), Когда администратор изменяет часовой пояс из раскрывающегося списка, панель администратора отражает часовой пояс из выбранного раскрывающегося списка.
Как изменить конфигурацию / приложение.php "часовой пояс" (Application Timezone) в соответствии с выбранной опцией.

4 ответов


вы можете использовать функцию Laravel helper config установить часовой пояс. Однако это повлияет только на запрос, который вы получите.

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

если ваша цель состоит в том, чтобы изменить один раз часовой пояс и запустить по каждому запросу, то как насчет сохранения измененного часового пояса в БД или в файле. Затем напишите запрос для БД или прочитайте файл в app/config.php и изменить значение индекса часового пояса в файле.

например (пример файла):

когда вы изменили часовой пояс он сохраняет в файле.

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

и app/config.php

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

вам также нужно позвонить для меня

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

Если вы хотите сохранить новый часовой пояс для всех будущих запросов, вам нужно использовать пакет, такой как larapack / config-writer чтобы иметь возможность сохранить часовой пояс в конфигурации.

другой способ справиться с этим-сохранить часовой пояс в БД, получить его в каждом запросе и установить его с config(['app.timezone' => $timezone]) динамически.


можно использовать middleware чтобы достичь этого, какие бы маршруты вы ни написали, упомяните всех тех, кто применяется с этим промежуточным программным обеспечением.
Вы можете получить эти данные из базы данных и применить их следующим образом,

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