Как получить и использовать ассоциативный массив из YAML для действий в Symfony? - PullRequest
6 голосов
/ 16 октября 2010

Я получил в app.yml некоторые данные о конфигурации, и я хочу использовать их в действии. Я пытаюсь сделать это путем получения их с помощью sfConfig :: get ('app_datas'), но это не удается. Давайте покажем их в деталях:

YAML:

all:
  datas:
    foo: bar
    foo2: bar2

и в actions.class.php я пытаюсь использовать этот код:

foreach (sfConfig::get('app_datas') as $key => $value) {

    echo "key $key has value $value";

}

это не работает, потому что sfConfig :: get ('app_datas') имеет значение NULL, как просто получить его?

Ответы [ 2 ]

17 голосов
/ 16 октября 2010

Если вы хотите получить доступ к первому уровню в виде массива, вы можете ввести промежуточный уровень между ними, как предложено @jeremy. Поставьте префикс с точкой , если вы не хотите, чтобы она фактически появлялась в конфигурации имен переменных:

all:
  .baz:
    datas:
      foo: bar
      foo2: bar2

Теперь вы сможете получить доступ к своим данным с помощью:

foreach (sfConfig::get('app_datas') as $key => $value) 
{
  echo "key $key has value $value";
}
11 голосов
/ 16 октября 2010

Когда Symfony загружает app.yml файлы конфигурации, он сохраняет только 2-й уровень вниз.Таким образом, вы не можете получить доступ к app_datas напрямую.Если вы хотите получить массив, содержащий foo и foo2, создайте файл YAML, например:

all:
  datas:
    baz:
      foo: bar
      foo2: bar2

Затем вы можете сделать sfConfig::get('app_datas_baz'), который будет массивом, содержащим foo и foo2 как ключи.

При редактировании : путь Кубы лучше, чем манекен;забыл, что ты можешь это сделать.

...