2013-03-26 11 views
13

Dodaję nową linię poleceń. Chciałbym mieć dostęp do wartości parametru (parameters.yml) w mojej klasie.Parametr dostępu z klasy poleceń

Przeczytałem, że powinienem dodać tę klasę jako usługę, aby mieć dostęp do parametru. Więc

//config.yml

imports: 
- { resource: services.yml } 

//services.yml

services: 
    less_css_compiler: 
    class: MyVendor\MyBundle\Command\ThemeCommand 
    arguments: [%less_compiler%] 

//parameters.yml

parameters: 
    less_compiler:  WinLess.exe 

mówi się, że normalnie argument jest w konstruktor klasy, ale jeśli to zrobię:

public function __construct($less_compiler) { 
    $this->less_compiler = $less_compiler; 
} 

Mam ostrzeżenie, że brakuje pierwszego argumentu. W klasie macierzystej polecenia jest nazwa unikalnej jak wtedy argument konstruktora, ale mimo to piszę:

public function __construct($name, $less_compiler) { 
} 

To niczego nie zmienia ..

Inna możliwość jest wywołanie usługi w mojej klasie :

$service = $this->getContainer()->get('less_css_compiler'); 

Ale jak mogę uzyskać argument?

Dziękuję

Odpowiedz

23

prosty sposób, niech komenda przedłużyć ContainerAwareCommand

$this->getContainer()->getParameter('parameter_name'); 

lub

Należy utworzyć oddzielną klasę usług

$service = $this->getContainer()->get('less_css_compiler'); 

//services.yml

services: 
    less_css_compiler: 
    class: MyVendor\MyBundle\Service\LessCompiler 
    arguments: [%less_compiler%] 

W klasie usług, tworzenie konstruktora jak wyżej wspomniałeś

public function __construct($less_compiler) { 
    $this->less_compiler = $less_compiler; 
} 

wezwać serwis z klasy poleceń.

To wszystko.

Powód: Robisz się jako klasa poleceń służby, bit klasa komenda contructor spodziewa nazwę polecenia jako pierwszy argument.

+2

Czy to naprawdę czyste, aby utworzyć usługę, aby uzyskać dostęp do parametru w parameters.yml ... może jest inny sposób niż korzystanie z usługi? – mlwacosmos

+2

oczywiście tak, $ this-> getContainer() -> getParameter ('nazwa parametru'); – Venu

Powiązane problemy