Intereting Posts
Символы, разрешенные в ключах php-массива? автоматически планировать выполнение скрипта php в определенное время Как получить геолокацию из почтового индекса Великобритании как перенаправить в подпапку, а затем переписать ссылку вложенной папки на root в htaccess? Арабский скрипт в формате PDF, созданный UFPDF Yii: показать сообщение, когда введенный поиск пуст, и отправить нажатие Создание более короткого открытого идентификатора Amazon SES Ошибка получения учетных данных с сервера метаданных профиля экземпляра. (Ошибка клиента: 404) php geo ip loc не работает PECL solr не загружается из-за неопределенного символа: curl_easy_getinfo PHP / cURL на Windows install: «Указанный модуль не найден». Проверьте тип и размер файла изображения перед загрузкой файла в php php-страница в img src Класс соединения PDO / код и класс Создать таблицу с проверкой PHP с использованием значения и текущего значения (Массив)

Symfony. Почему моя форма получает каждый ответ, который существует в таблице?

Это не столько проблема, сколько то, что я заметил и хотел бы лучше понять.

У меня есть класс Poll котором есть коллекция votes и pollOptions . Мой класс PollOption имеет poll к PollOption он принадлежит, и title . Класс Vote также имеет poll к voteChoices он принадлежит, а также собственную коллекцию voteChoices и user . У класса VoteChoice есть vote оно принадлежит, answer ( PollOption ), за который идет голосование, и priority .

У меня есть форма, содержащая набор форм ( Vote со многими VoteChoice )

VoteChoiceType выглядит следующим образом

 class VoteChoiceType extends AbstractType { public function buildForm(FormBuilderInterface $builder, array $options) { $builder ->add('answer', null, array('disabled' => true)) ->add('priority', null); } public function configureOptions(OptionsResolver $resolver) { $resolver->setDefaults(array( 'data_class' => 'PollBundle\Entity\VoteChoice', )); } } 

Теперь в моем VoteController я создаю и заполняю Vote многими voteChoices , устанавливая answer соответствии с доступными вариантами текущего опроса (полученного из URL-адреса)

 $vote = new Vote(); $vote->setPoll($poll); foreach ($vote->getPoll()->getPollOptions() as $op) { $vc = New VoteChoice(); $vote->addVoteChoice($vc->setAnswer($op)); } - $vote = new Vote(); $vote->setPoll($poll); foreach ($vote->getPoll()->getPollOptions() as $op) { $vc = New VoteChoice(); $vote->addVoteChoice($vc->setAnswer($op)); } 

Итак, моя ветка выглядит следующим образом

 <ul class="voteChoices" data-prototype="{{form_widget(form.voteChoices.vars.prototype)|e('html_attr') }}"> {% for voteChoice in form.voteChoices %} <li>{{ voteChoice.vars.value.answer }} {{ form_row(voteChoice.priority) }}</li> {% endfor %} </ul> </div> <p><button type="submit" class="btn btn-success">Go!</button></p> {{ form_end(form) }} 

Однако, если я VotechoiceType answer в свой VotechoiceType а в моей VotechoiceType включаю {{ form_row(voteChoice.answer) }} я замечаю, что все мои параметры опроса из таблицы, как и в выбираемом списке, даже если они отделены от другого опроса.

Почему это? Как я могу заставить его просто отображать варианты, доступные в опросе, к которому принадлежит голосование? Мое подозрение в том, что я не правильно обрабатывал отношения между VoteChoice и PollOption (многие к одному). Если я допустил ошибку здесь, я, скорее всего, сделал это в другом месте (например, Poll возможно, получает каждое Vote в db, а не те, которые принадлежат ему)