coderex
coderex

Reputation: 27855

Symfony passing array of arguments to DI services via yml file

I'm using symfony 2.x and I have a class which accept and array of configurations from yml file

config.yml

services:
  my_di: 
    class: \MyClass
    arguments:
      - param1: 'myvalue'

MyClass.php

class {

public function __construc(array $configs = []) {

 var_dump($config);

}

Output (this is working correctly)

array (size=1)
   param1 => 'myvalue'
)

But I want to pass one more value to the same array via yml - param2: 'myvalue2'

and the exprected output will be

array (size=1)
   param1 => 'myvalue',
   param2 => 'myvalue2'
)

How can I achieve this?

Upvotes: 13

Views: 21557

Answers (2)

Yoann Kergall
Yoann Kergall

Reputation: 3302

You can achieve this with the following syntax (don't put a dash - at the beginning of each row of your associative array):

services:
  my_di: 
    class: \MyClass
    arguments:
      $configs:
        param1: 'myvalue'
        param2: 'myvalue2'
        param3: 'myvalue3'

Upvotes: 6

fxbt
fxbt

Reputation: 2596

Simply use a yaml array in your config.yml file:

services:
  my_di: 
    class: \MyClass
    arguments:
      - { param1: 'myvalue', param2: 'myvalue2' }

Upvotes: 31

Related Questions