YML-файлы в Symfony - можете ли вы получить ассоциативные массивы более чем на 1 уровень ниже? - PullRequest
3 голосов
/ 15 сентября 2010

У меня есть куча данных, которые я хочу сохранить в /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 ]

5 голосов
/ 16 сентября 2010

Вы можете добавить уровень с точкой перед его именем, чтобы заставить массив на определенном уровне:

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 голос
/ 15 сентября 2010

Как правило, как только я прибегаю к публикации ответа, я бьюсь по лицу ...

$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 определенно выглядит так, как будто это было!

Надеюсь, это поможет кому-то еще!

...