2011-09-12 73 views
1

我正在開發一個有點複雜的AJAX應用程序,使用symfony 1.4。這將是非常有益的,我使用了自定義屬性爲我的模塊,這是我在module.yml配置文件定義,例如:從其他模塊訪問symfony模塊配置

all: 
    first_property: value1 
    second_property: value2 

這個特性將用於主要用於格式化JavaScript生成的視圖,使用從我的模塊返回的JSON值。例如 - 我的主模塊(用於呈現基本視圖)控制器,我想用類似的東西:

// In frontend/modules/main 
$property sfConfig::get('mod_somemodule_someproperty'); 

它不會因爲一個模塊的默認屬性是不可訪問的模塊之外的工作由sfConfig :: get()方法。

我的問題是:

是否有可能以某種方式訪問​​這些屬性?

如果不是 - 我會很感激,如果有人提出了一種不同的方式,我可以爲我的模塊指定一些重複的屬性,並從外部控制器訪問它們。

謝謝。

回答

1

我猜你熟悉app.yml配置?它用於存儲整個應用程序的配置設置,而不僅僅是選定的模塊。這是存儲更多通用設置的地方...

但是,那說。您可以用sfYaml課程打開您選擇的module.yml。事情是這樣的(僞代碼)

$moduleName = 'module'; 
$path = sfConfig::get('sf_app_dir').'/modules/'.$moduleName.'/config/module.yml'; 
$moduleConfig = sfYaml::load($path); 
$property = $moduleConfig['all']['first_property']; 

或者,可以合併的項目與所選擇的環境all關鍵。

2

如果要訪問模塊外部的模塊配置,爲什麼不使配置成爲應用程序級配置? 如果您想在應用程序之間共享應用程序級別配置,則配置應該是項目級別。

+0

是的,我知道我可以指定應用程序範圍的設置,我只是認爲它會更合適(或優雅)設置每個模塊 - 因爲它們基本上是模塊級別的。例如 - 一個名爲_visible_fields_的屬性,定義哪些模型字段應該在列表視圖中可見。 – Przemek

+0

指出在模塊級別需要它們時,它不是更合適。 – Gerry

+0

所以我去了應用程序級別的設置。謝謝大家的回覆。 – Przemek

0

當我想要在模塊外共享任何代碼時,我只是把它放在一個插件中,任何模塊都可以從中獲取它。我不知道這對物業有效,但我懷疑是這樣。