2011-08-03 5 views
14

Tôi có một số cài đặt hiện có trong tệp config.yml.Làm thế nào để bạn tải cấu hình cài đặt từ cơ sở dữ liệu trong Symfony2?

Về sau Tôi muốn có thể phát triển giao diện nơi quản trị viên có thể cập nhật các cài đặt này, vì vậy tôi muốn có thể quản lý các cài đặt này thông qua cơ sở dữ liệu.

Làm cách nào để tôi có thể tải các cài đặt này từ cơ sở dữ liệu vào Symfony2 và ở đâu và khi nào tôi sẽ tải chúng?

Cheers

Adam

Trả lời

7

Có một cookbook article giải thích khoảng cách để làm điều này (mặc dù thời gian ngắn), trong tài liệu tham khảo để tải trong cài đặt bên ngoài từ Drupal. Ý tưởng cơ bản là để làm một cái gì đó như thế này trong cấu hình của bạn (ví dụ là yml):

# app/config/config.yml 
imports: 
    - { resource: parameters.php } 

sau đó trong parameters.php bạn có thể làm bất cứ điều gì bạn cần để có được cấu hình của bạn, và thiết lập nó như sau:

$container->setParameter('my.db.parameter', $value); 

(lấy từ sách nấu ăn, được sửa đổi một chút).

+0

Xin chào người giàu, cảm ơn câu trả lời có vẻ tuyệt vời. Có một nơi tốt mà bạn đề nghị lưu trữ tệp parameters.php không? Nếu nó là một phần của một gói hoặc một dịch vụ hoặc tôi nên có nó như là một tập tin php đứng một mình. Làm thế nào sau đó tôi sẽ truy cập vào dịch vụ orm học thuyết? Xin lỗi cho tất cả các câu hỏi. –

+0

Xin chào những người giàu có, xin lỗi, hãy nhìn vào ví dụ về sách dạy nấu ăn và có thể xem vị trí của tập tin. –

+1

Tôi sẽ nói lưu trữ tệp của bạn trong thư mục 'app/config' - ít nhất cấu hình của bạn là tất cả cùng nhau. Tôi không chắc chắn như thế nào "có sẵn" dịch vụ là tại thời điểm đó tuy nhiên, nếu ở tất cả, do đó, không chắc chắn nếu bạn muốn có thể làm ví dụ như '$ container-> get (" my.service ")'. Có thể có giá trị một thử mặc dù! – richsage

7

Hãy xem qua số UnifikDatabaseConfigBundle. Nó tạo ra một cấu trúc cơ sở dữ liệu cho phép cấu hình các tham số Symfony trực tiếp từ cơ sở dữ liệu.

+0

Gói tuyệt vời! Tôi sắp phát triển một thứ tương tự. Cám ơn vì đã chia sẻ! :) – tftd