2010-10-16 20 views
6

Tôi có trong app.yml một số dữ liệu cấu hình, và tôi muốn cho họ hoạt động. Tôi cố gắng làm điều này bằng cách lấy chúng bằng sfConfig :: get ('app_datas') nhưng nó không thành công. Cho phép hiển thị chúng trong chi tiết:Làm thế nào để có được và sử dụng mảng kết hợp từ YAML để hành động trong Symfony?

YAML:

all: 
    datas: 
    foo: bar 
    foo2: bar2 

và trong actions.class.php tôi cố gắng sử dụng mã này:

foreach (sfConfig::get('app_datas') as $key => $value) { 

    echo "key $key has value $value"; 

} 

nó không làm việc vì sfConfig :: get (' app_datas ') là NULL, làm thế nào simly có được nó?

Trả lời

9

Khi Symfony tải các tệp cấu hình app.yml, nó chỉ lưu trữ cấp 2 xuống. Vì vậy, bạn không thể truy cập trực tiếp app_datas. Nếu bạn muốn nhận được một mảng chứa foofoo2, tạo một file YAML như:

all: 
    datas: 
    baz: 
     foo: bar 
     foo2: bar2 

Sau đó bạn có thể làm sfConfig::get('app_datas_baz') mà sẽ là một mảng chứa foofoo2 như phím.

Chỉnh sửa: cách của kuba tốt hơn so với giả; Quên bạn có thể làm điều đó.

15

Nếu bạn muốn truy cập cấp đầu tiên dưới dạng mảng, bạn có thể giới thiệu mức giả ở giữa, giống như @jeremy được đề xuất. Prefix nó với một dấu chấm nếu bạn không muốn nó thực sự xuất hiện trong cấu hình các tên biến:

all: 
    .baz: 
    datas: 
     foo: bar 
     foo2: bar2 

Bây giờ bạn sẽ có thể truy cập dữ liệu của bạn với:

foreach (sfConfig::get('app_datas') as $key => $value) 
{ 
    echo "key $key has value $value"; 
} 
+0

con đường để đi , kuba - đã cứu ngày của tôi trên một thời hạn khó khăn! – Timm

+2

Chỉnh sửa nhỏ: giá trị chấm chấm trên dòng thứ hai (.baz) phải có hậu tố kết tràng, giống như các dòng khác. (Tôi sẽ chỉnh sửa). – halfer

Các vấn đề liên quan