Gottlieb Notschnabel Gottlieb Notschnabel - 2 days ago 3
YAML Question

How to access nested parameter values in Symfony2?

I created a parameter in my

parameters.yml
file:

parameters:
category:
var: test


How can I access this parameter in my
config.yml
? For example, I want to pass this parameter to all my twig files as a global twig variable:

twig:
globals:
my_var: %category.var% # throws ParameterNotFoundException

Answer

In all the symfony config files I've seen, the entries under 'parameters:' have always been fully qualified. I don't fully understand why this is but it may help you to write the entries in your parameters.yml like this:

category1.var1: xxx
category1.var2: yyy
category1.var3. zzz

category2.subcategory1.var1: 5
category2.subcategory1.var2: 10
category2.subcategory2.var1: foo
category2.subcategory2.var2: bar

... and so on.

EDIT

I tried pasting the nested parameter from the question into parameters.local.yml in one of my projects and ran a trivial unit test to retrieve that and a fully qualified parameter from the container e.g.

    $testUserEmail = $container->getParameter('test.user.email');
    $this->assertEquals('dahlia.flower@randomtest.com', $testUserEmail);
    $testParam = $container->getParameter('category.var');
    $this->assertEquals('test', $testParam);

The fully qualified parameter was fine, attempting to get the nested parameter resulted in an InvalidArgumentException: The parameter category.var must be defined. I don't think parameters can be defined with nesting.

Comments