Symfony2: как читать массив параметров в config.yml

мой файл parameters.yml имеет:

parameters:
     title:
          subtitle: value

я хочу передать value службе в config.yml

my_service:
        class: the_class
        arguments: [ %title.subtitle%] //didn't work
        arguments: [ %title['subtitle']%] //didn't work

Как я могу это сделать?


person trrrrrrm    schedule 12.11.2013    source источник
comment
Вы пытались определить заголовок как хэш-карту, например title: {value:'someValue', subtitle:'another value'}? Кстати, ссылки на параметры должны быть заключены в кавычки. arguments: ['%title%'] см. документацию   -  person Stphane    schedule 26.04.2016


Ответы (2)


Обозначение % не работает, но это можно сделать следующим образом:

my_service:
    class: the_class
    arguments: ["@=container.getParameter('title')['subtitle']"]

Это работает по крайней мере для symfony 2.7.3

Дополнительную информацию о языке выражений можно найти в кулинарной книге: http://symfony.com/doc/current/book/service_container.html#using-the-expression-language

person user725408    schedule 06.09.2015
comment
Где вы нашли этот синтаксис "@=container.getParameter('title')['subtitle']"? - person nbro; 05.08.2016
comment
проверьте документ symfony.com/doc/2.7/service_container/expression_language.html - person user725408; 10.08.2016

Symfony2 не поддерживает чтение отдельных элементов массива параметров с использованием нотации %. То, что вы делаете, невозможно из коробки.

Единственный способ сделать это - создать свой собственный Symfony\Component\DependencyInjection\ParameterBag\ParameterBag, который будет поддерживать выборку элемента массива.

person Andrew Moore    schedule 12.11.2013