Symfony2: Многоуровневые параметры в YML

Вот что я хочу сделать. У меня есть файл yml, например...

Мой пользовательский файл yml:

# app/config/sv_parameters.yml
parameters:
  sv_email:
    debug: "[email protected]"
    admin: "[email protected]"
    ...

Файл config.yml, импортирующий мои пользовательские параметры:

# app/config/config.yml
imports:
  - { resource: sv_parameters.yml }
...

config_dev.yml, импорт config.yml и использование подпараметра моего пользовательского файла yml:

# app/config/config_dev.yml
imports:
- { resource: config.yml }

swiftmailer:
  delivery_address: "%sv_email.debug%"

Но когда я clear:cache :

You have requested a non-existent parameter "sv_email.debug".

Я знаю, что в PHP многоуровневые параметры представляют собой массивы. Но значит ли это, что мы можем получить к ним доступ в чистом YML?

Я мог бы написать свои sv_email параметров встроенными, но это не так чисто, как несколько уровней..


person Bonswouar    schedule 28.08.2013    source источник


Ответы (1)


Это невозможно в YML.
Вам нужно переместить эту вложенную переменную на верхний уровень, а затем включить ее в обоих необходимых местах.

person Vitalii Zurian    schedule 28.08.2013
comment
Вот что я подумал. Планируют ли они реализовать это в YML? Потому что иногда было бы намного чище, чем повторять sv_email.debug sv_email.admin sv_email.client... - person Bonswouar; 28.08.2013
comment
@Bonswouar Понятия не имею :) - person Vitalii Zurian; 28.08.2013
comment
Без шансов. . разрешено в именах параметров yaml, поэтому sv_email.client : value работает нормально. Просто невозможно преобразовать массивы в точечную запись без массивного разрыва bc. - person Cerad; 28.08.2013
comment
С другой стороны, метод Symfony:DependencyInjection::load позволяет вам добавлять параметры в ваш контейнер. Таким образом, вы можете преобразовать sv_email в отдельные параметры, если хотите. Но я подозреваю, что вы можете обнаружить, что это доставляет больше хлопот, чем пользы. - person Cerad; 28.08.2013