2017-12-22 143 views
5

Trong dự án của tôi có thả xuống múi giờ (PT, CST vv), khi Admin thay đổi múi giờ từ trình đơn thả xuống, bảng quản trị phản ánh múi giờ từ menu thả xuống đã chọn.
Cách thay đổi Config/app.php "múi giờ" (Múi giờ ứng dụng) theo tùy chọn đã chọn.Thay đổi TimeZone động trong laravel

Trả lời

2

Bạn có thể sử dụng chức năng Laravel helper config để thiết lập múi giờ. Tuy nhiên, điều này sẽ chỉ ảnh hưởng đến yêu cầu bạn sẽ nhận được.

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

Nếu mục tiêu của bạn là thay đổi múi giờ đã thay đổi và chạy theo mọi yêu cầu thì hãy lưu múi giờ đã thay đổi trong DB hoặc trong tệp. Sau đó, viết một truy vấn cho DB hoặc đọc một tệp trong app/config.php và thay đổi giá trị của múi giờ chỉ mục trong một tệp.

Ví dụ: (ví dụ về tệp):

Khi bạn thay đổi múi giờ lưu trong tệp.

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

Và, trong app/config.php

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

Bất cứ khi nào có sự thay đổi trong tập tin cấu hình, cần phải chạy php thợ thủ công cấu hình: bộ nhớ cache để có được những thay đổi này. Cách các thay đổi phản ánh mà không cần cấu hình: lệnh bộ nhớ cache? – SVM

+0

Tôi không nghĩ vậy .... bạn có thử không? nhưng dù sao bạn có thể thêm exec ("php artisan cache: clear") thực thi thời gian ngẫu nhiên .. hoặc chỉ một lần khi tệp đã thay đổi. bạn cũng có thể sử dụng hàm filemtime(). một cái gì đó như thế này bây giờ() - filemtime() <5, sau đó chạy lệnh exec –

2

Nếu bạn muốn giữ múi giờ mới cho tất cả các yêu cầu trong tương lai, bạn cần sử dụng gói như larapack/config-writer để có thể lưu múi giờ vào tệp cấu hình app.

Một cách khác để xử lý việc này là giữ múi giờ trong DB, tìm nạp múi giờ trong mọi yêu cầu và đặt nó với config(['app.timezone' => $timezone]) động.

2

Bạn có thể sử dụng middleware để đạt được điều này, tùy theo bất kỳ tuyến đường nào bạn sẽ viết đề cập đến tất cả những người áp dụng với phần mềm trung gian đó.
Bạn có thể lấy dữ liệu từ cơ sở dữ liệu và áp dụng nó như như sau,

config('app.timezone', 'your selected timezone') 
Các vấn đề liên quan