Коллекция форм Symfony2 из одной сущности

У меня есть объект под названием «Кандидат». Это не то чтобы особенное. Сам по себе он работает нормально: я могу создать форму из типа и сохранить ее.

class CandidateType extends AbstractType
{
public function buildForm(FormBuilderInterface $builder, array $options)
{
    $builder
        ->add('name', TextType::class, array('label' => 'Naam'))
        ->add('openPosition', EntityType::class, array('class' => 'AppBundle:OpenPosition','choice_label' => 'subject','label' => 'Functie'))
        ;

}

Однако я хочу иметь возможность создать коллекцию этой формы, чтобы пользователи могли снова и снова создавать новых кандидатов с помощью Javascript и сохранять их все сразу. Я уже проделал некоторую работу над другой коллекцией (сущность, которая имеет отношение «один ко многим» с другой сущностью, с прототипом и некоторым хорошим Javascript), и это отлично работает, но я, похоже, не могу создать коллекцию только одна сущность (что на самом деле звучит как парадокс, возможно, я ошибаюсь).

Есть мысли по этому поводу?


person Steve    schedule 19.09.2016    source источник
comment
Привет, почему бы не создать собственный тип формы с набором массивов Candidate и просто обработать отправку так, как вы хотите (с хорошим javascript спереди для обработки добавлений, удаления и т. д.)? или я что-то упускаю?   -  person Alvaro Lopez Guerra    schedule 20.09.2016


Ответы (2)


Из документации Symfony вы можете встроить набор форм с помощью jquery. Используя прототип данных и множество javascript/jquery, вы должны уметь делать трюки.

Вот документ, я использую его для управления добавлением нескольких адресов для пользователя, и он работает хорошо!

http://symfony.com/doc/current/form/form_collections.html#allowing-new-tags-with-the-prototype

Но, конечно же, вам нужно будет создать пользовательский метод multipleCreateAction() для обработки множественного создания установленных кандидатов.

person Cyrille Hejl    schedule 21.09.2016

Я решил это так, как предложил Alvaro: создав ArrayCollection кандидатов:

$candidates['candidates'] = new ArrayCollection();

Затем я обработал его, как и любую другую коллекцию форм.

person Steve    schedule 21.09.2016