2016-07-13 3 views
0

У меня есть коллекция с отношением oneToMany. Теперь вместо использования всего прототипа и реализации javascript в соответствии с официальным cookbook, Я хотел бы иметь возможность добавлять только один элемент в коллекцию сразу. В идеале, используя e customType вместо CollectionType, но Symfony, похоже, не позволяет этого. Кроме того, я бы хотел избежать взлома в контроллере.коллекция symfony - добавьте сразу один элемент

У кого-нибудь есть хорошая идея реализовать это?

+0

Сделайте то же самое из поваренной книги, но измените код js для удаления кнопки добавления после вставки. Это имеет смысл для вас? – abdiel

ответ

0

Если я понимаю, что вы хотите добавить один элемент за раз и избегать JavaScript, почему бы не что-то вроде функции, которая имеет форму, которая обрабатывает один экземпляр вашего связанного объекта.

Например, когда вы выполняете функцию добавления/создания, создайте новый объект и просто установите связанное значение объекта и передайте его в форму.

Пример; класса Foo является один, класс Бар многие

$bar = new Bar(); 
$bar->setFoo(1); 

$form = $this->createFormBuilder($bar) 
      ->add('whatever', TextType::class) 
      -->add('save', SubmitType::class, array('label' => 'Create Bar for Foo')) 
      ->getForm(); 

После успешной формы, перенаправлять туда, где вы хотите; либо другую форму добавления, либо список вашего родительского класса. Это действительно не более чем базовый пример того, как Symfony handles forms, вы просто создаете новый объект, предварительно устанавливая некоторые из значений.

+0

Благодарим вас за предложение. Да, это может быть решением. Я надеялся, что есть способ без предварительной настройки данных. следовательно, без '$ bar-> setFoo (1);' Я думаю, это невозможно –