Symfony2: динамически изменять свойство класса типа поля сущности

0

Я работаю над проектом по созданию маркетинговых кампаний. Среди других свойств каждая Кампания ассоциировала объект AudioFile, который указывает аудиофайл, который будет воспроизводиться с этой кампанией. Моя форма создания кампании выглядит так:

 $form = $this->createFormBuilder($CampaignObject)
->add('audiofile', 'entity', array('class'=>'AcmeDemoBundle:AudioFiles', 'property'=>'name',   'multiple'=>false, 'expanded'=>true, 'mapped'=>true))
/*other fields */

Кроме того, я хочу дать пользователю возможность загружать новый аудиофайл "на лету" при создании кампании. Как только он будет загружен, и новый объект сущности аудиофайла будет создан и сохранен в базе данных, я хочу динамически изменить поле сущности, чтобы отразить это изменение в списке аудиофайлов, я хочу сделать это, не перезагружая всю страницу, чтобы не потерять поля, которые уже заполнены, но я не могу понять, как это достичь. Любая помощь будет оценена по достоинству.

спасибо

Теги:
doctrine

2 ответа

0
Лучший ответ

Ну, Symfony - это фреймворк, что означает, что для достижения того, что вы хотите, вам придется реализовать некоторые функции Javascript. Также обратите внимание, что форма является stateful, и она создается в вашем контроллере.

Таким образом, вам нужно будет сохранить свой AudioFile а затем связать его с Campaign. Это достижимо благодаря наличию отдельных форм, которые почтительно принимают файлы и кампании.

0

Спасибо. Наконец я нашел обходное решение. Я создал список аудио из getRepository независимо от формы, добавив кнопку выбора для каждой кампании. Когда пользователь нажимает кнопку выбора, я заполняю скрытое поле с идентификатором выбранного аудиофайла. Затем при отправке в контроллер я вручную получаю объект AudioFile этим идентификатором и выполняю Doctrine $campaign-> addAudiofile ($ AudioFile) перед сохранением.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню