Symfony中的YML文件 - 你能获得超过1级的关联数组吗?

时间:2010-09-15 17:46:36

标签: symfony1 symfony-1.4 yaml

我想要存储在/apps/frontend/modules/builder/config/module.yml中的大量数据。

我看起来像是:

all:
  series_options:
    compact:
      name: Compact
      description: Something small.
      enabled: 1
    large:
      name: Large
      description: Bit bigger.
      enabled: 0

如果我写这个,在actions.class中:

sfConfig::get('mod_builder_series_options_compact');

我明白了

Array
(
  [name] => Compact
  [description] => Something small.
  [enabled] => 1
)

完美。但我想写下这个:

sfConfig::get('mod_builder_series_options');

提供NULL

有什么方法可以让它将完整的关联数组返回到它的全部深度,以便我可以遍历不同的选项吗?

2 个答案:

答案 0 :(得分:5)

您可以在其名称前添加一个带有点的级别,以强制某个级别的数组:

all:
  .options:
    series_options:
      compact:
        name: Compact
        description: Something small.
        enabled: 1
      large:
        name: Large
        description: Bit bigger.
        enabled: 0

现在您应该可以使用以下方式访问您的设置:

sfConfig::get('mod_builder_series_options');

请记住,模块配置只能在定义的模块中访问。

答案 1 :(得分:1)

典型的,一旦我求助于发布答案,我就会面对面......

$series = sfYaml::load('../apps/frontend/modules/builder/config/module.yml');  
print_r($series);die;

返回:

Array
(
  [all] => Array
    (
        [series_options] => Array
            (
                [compact] => Array
                    (
                        [name] => Compact
                        [description] => Something small.
                        [enabled] => 1
                    )

                [large] => Array
                    (
                        [name] => Large
                        [description] => Bit bigger.
                        [enabled] => 0
                    )
            )

    )

)

猜测sfConfig并不是真正意味着这个目的,其中sfYaml看起来确实如此!

希望这有助于其他人!