从其他模块访问symfony模块配置

时间:2011-09-12 12:49:44

标签: php symfony1 module controller symfony-1.4

我正在使用symfony 1.4开发一个有点复杂的,主要是AJAX的应用程序。对我来说,使用我在 module.yml 配置文件中定义的模块的一些自定义属性非常有用,例如:

all:
  first_property: value1
  second_property: value2

此属性主要用于格式化javascript生成的视图,使用从我的模块返回的JSON值。例如 - 在我的主模块(用于渲染基本视图)控制器中我想使用类似的东西:

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

它不起作用,因为默认情况下, sfConfig :: get()方法无法在模块外部访问模块的属性。

我的问题是:

是否有可能以某种方式访问​​这些属性?

如果没有 - 如果有人建议采用不同的方式为模块指定一些重复属性并从外部控制器访问它们,我将非常感激。

感谢。

3 个答案:

答案 0 :(得分:2)

如果要访问模块外部的模块配置,为什么不将配置设置为应用级配置? 如果您想在应用程序之间共享应用程序级别配置,则配置应该是项目级别。

答案 1 :(得分:1)

我猜你熟悉app.yml配置?用于存储整个应用程序的配置设置,而不仅仅是选定的模块。这是存储更多通用设置的地方......

但是,那就是说。您可以使用module.yml课程打开您选择的sfYaml。像这样的东西(伪代码)

$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)

每当我想要在模块之外共享任何代码时,我只是把它放在一个插件中,任何模块都可以从中获取它。我不知道这适用于属性,但我怀疑。