2017-12-22 6 views
5

In meinem Projekt gibt es Drop-Down-Zeitzonen (PT, CST usw.), wenn Admin die Zeitzone aus Drop-Down ändert das Admin-Panel die Zeitzone aus dem ausgewählten Dropdown.
So ändern Sie Config/app.php "Zeitzone" (Anwendungszeitzone) gemäß der ausgewählten Option.Ändern TimeZone dynamisch in Laravel

Antwort

2

Sie Helferfunktion Laravel aufrufen müssen Zeitzone einzustellen. Dies betrifft jedoch nur die Anfrage, die Sie erhalten.

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

Wenn Ihr Ziel ist es, sobald die Zeitzone zu ändern, und bei jeder Anfrage läuft was ist dann die geänderte Zeitzone in DB speichern oder in einer Datei. Schreiben Sie dann eine Abfrage für DB oder lesen Sie eine Datei in app/config.php und ändern Sie den Wert der Indexzeitzone in einer Datei.

Zum Beispiel (Datei Beispiel):

Wenn die Zeitzone geändert in einer Datei gespeichert werden.

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

Und in app/config.php

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

Wenn Änderung in der Konfigurationsdatei ist, müssen php Handwerker Config auszuführen: Cache erhalten Sie die Änderungen. Wie spiegeln sich die Änderungen ohne config: cache command? – SVM

+0

Ich glaube nicht .... hast du es versucht? aber trotzdem können Sie exec ("php artisan cache: clear") hinzufügen, die zufällige Zeit ausführen .. oder nur einmal, wenn sich die Datei geändert hat. Sie können auch die Funktion filemtime() verwenden. etwas wie das jetzt() - filemtime() <5, dann führe den exec Befehl aus –

2

Wenn Sie für alle zukünftigen Anfragen eine neue Zeitzone einrichten möchten, müssen Sie ein Paket wie larapack/config-writer verwenden, um die Zeitzone in der Konfigurationsdatei app speichern zu können.

Eine andere Möglichkeit, dies zu handhaben, ist, die Zeitzone in der DB zu behalten, sie in jeder Anforderung abzurufen und sie dynamisch mit config(['app.timezone' => $timezone]) zu setzen.

2

Sie können middleware verwenden, um dies zu erreichen, die Routen, die Sie schreiben, erwähnen alle diejenigen, die mit dieser Middleware gelten.
Sie können diese Daten aus der Datenbank holen und es gelten wie wie folgt,

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

Sie auch config können date_default_timezone_set

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