Symfony2.7, возникли проблемы с полем коллекций форм и Doctrine

У меня есть сущность Blog, которая должна иметь одну сущность Poll, и каждая сущность Poll имеет множество сущностей Choice, связанных с ней. Я пытался создать форму «Добавить / Изменить опрос» для блога. В этой форме, в дополнение к полям формы Опрос, я хочу иметь поле, которое позволяет вам добавлять варианты (каждое простое текстовое поле). У меня проблемы с выяснением, как я должен кодировать это так, чтобы это работало хорошо. Форма PollType выглядит следующим образом:

public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder->add('title', 'text');
$builder->add('choices', 'collection',
array(
'label_attr' => array(
'style' => 'vertical-align: top;'
),
'type' => 'text',
'required' => false,
'allow_add' => true,
'allow_delete' => true,
'delete_empty' => true,
'attr' => array(
'style' => 'display: inline-block; margin: 0 0 20px 20px; width: 200px;'
)));
$builder->add('description', 'textarea', array('attr' => array('rows' => 6)));
$builder->add('save', 'submit', array('label' => 'Create Poll'));
$builder->getForm();
}

Первоначально у меня было ‘type’ => new ChoiceType () с ChoiceType, являющимся:

public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder->add('title', 'text');
}

Но я должен был удалить все это, потому что «Переменная» расширенная «не существует в ошибке bootstrap_3_layout.html.twig», для которой я не смог найти никакого решения. Я изменил тип на текстовый, но теперь я озадачен тем, как собирать данные из каждого поля «выборов», сохранять их в сущности «Выбор», а также связывать их все с новым опросом (который, возможно, не был еще не вставлен, поэтому у меня нет идентификатора для добавления в Choices-> pollID). Есть ли стандартный способ делать такие вещи, которые мне не хватает?

0

Решение

Если у вас есть объект Poll и объект Choice, то это выглядит так:

$builder->add('choice', 'entity', array(
'class' => 'AcmeHelloBundle:Choice',
'query_builder' => function (EntityRepository $er) {
return $er->createQueryBuilder('c')
->orderBy('choice.name', 'ASC');
},
));

Также вы должны иметь связь с OneToMany или ManyToMany со своими организациями.

Больше о Тип поля сущности

0

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector