2011-09-12 75 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

当我想要在模块外共享任何代码时,我只是把它放在一个插件中,任何模块都可以从中获取它。我不知道这对物业有效,但我怀疑是这样。