2014-12-23 2 views
0

Есть ли способ получить доступ к службе в FormType?Доступ к сервису в функции buildForm

Я создал функцию в службе, которая возвращает массив, и я хотел использовать его для заполнения «select».

Благодарим за помощь!

+0

Просто вводят услугу, как вы бы с любым другим классом. – qooplmao

ответ

0

Если вы не понимаете или не можете вводить службу в тип формы, просто передайте ее конструктору.

пример (контроллер):

$myService = $this->get('my_service'); 

$form = $this->createForm(new MyFormType($myService), ..., ...); 

и MyFormType:

... 

private $myService; 

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

... 
1

Вы должны объявить свой form type as a service. Затем вы сможете вводить некоторые услуги, как для любой другой услуги!

# src/Your/OwnBundle/Resources/config/services.yml 

services: 
    your_own.service_outputing_an_array: 
     class: Your\OwnBundle\ServiceOutputingAnArray 

    your_own.form.type.your_type: 
     class: Your\OwnBundle\Form\Type\YourType 
     arguments: 
      - @your_own.service_outputing_an_array 
     tags: 
      - { name: form.type, alias: your_type } 

Тогда служба, которую вы хотите, будет введена в качестве первого аргумента в конструкторе вашего типа формы.

+0

Вот что я действительно не понимаю ... Как я могу поместить массив (вывод функции в Сервис), который я хочу в файле app/config/config.yml? Что-то непонятно, но мне жаль, что я не знаю, что. – Anthony

+0

О, хорошо, документация для вас непонятна! Я обновляю свой ответ так. – Gnucki

+0

Скажите, если это недостаточно ясно с обновлением. – Gnucki

Смежные вопросы