2016-02-10 2 views
1

Я создаю форму в Symfony2. Форма имеет поле, которое отображается в массив сущностей, как это:Сделать выбор в Symfony FormType class

$builder 
    ->add('card', 'entity', array(
     'class' => 'AppBundle:Card', 
     'property' => 'description', 
     'choices' => $choices 
    )); 

я загрузить массив $ выбор в моем контроллере. Если я создам форму с помощью FormBuilder в контроллере, я могу легко установить опцию выбора, но я бы хотел сохранить ее в своем классе, чтобы избежать раздувания контроллера. Есть ли чистый способ ввода массива $ choice при создании формы?

+1

Ну, использование '$ options' - это чистый способ, но не автоматический. На самом деле это зависит от ваших '$ выборов'. Являются ли они результатом запроса (в этом случае вы можете использовать опцию 'query_builder' в поле вашего объекта), постоянный массив (в этом случае просто создайте частный атрибут в вашем FormType) или что-то зависящее от данных ? – Terenoth

+0

Какую версию Symfony вы используете? – Heah

+0

Я работаю над проектом с использованием Symfony 2.4. –

ответ

1

Я не уверен, что это лучший способ, и это, кажется, немного избыточно, но я в конечном итоге определение формы как сервис, как это:

my_custom_form_service: 
    class: AppBundle\Form\MyFormType 
    calls: 
     - [ setUser, ["@security.context"] ] 
    tags: 
     - { name: form.type, alias: my_form } 

мне нужна пользовательский объект потому что я получаю массив выбора из этого объекта.

+1

Я только что ответил, чтобы предложить некоторые альтернативы. – chalasr

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