Symfony – Элемент формы как обычный текст

У меня есть форма, содержащая набор форм ( 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', )); } } 

Теперь в моем контроллере я создаю и заполняю много 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)); } 

Поэтому, когда форма загружается, я хочу, чтобы все параметры отображались только – не для фактического выбора, а затем пользователь может установить приоритет, который они хотят. Тем не менее, ответ на каждый ответ, который у меня есть в моей таблице poll_options (у каждого Poll много PollOption , похожее на то, как у каждого Vote много VoteChoice )

Текущий шаблон ветви

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

Я хочу, чтобы voteChoice.answer был как обычный текст (поэтому он не является частью раскрывающегося списка – я знаю, что могу отключить его в FormBuilder, но я не хочу, чтобы он отображался как часть раскрывающегося меню, я просто хочу это как обычный текст)

Если я использую voteChoice.answer, я получаю следующую ошибку symfony

Во время рендеринга шаблона было выбрано исключение («Catchable Fatal Error: Object класса Symfony \ Component \ Form \ FormView не удалось преобразовать в строку») в poll \ vote.html.twig в строке 9.

У меня есть функция __toString в классе VoteChoice .

Я хочу, чтобы voteChoice.answer был как обычный текст (поэтому он не является частью раскрывающегося списка – я знаю, что могу отключить его в FormBuilder, но я не хочу, чтобы он отображался как часть раскрывающегося меню, я просто хочу это как обычный текст)

Вы можете получить доступ к текущим данным формы через form.vars.value ( Reference ):

 {{ voteChoice.vars.value.answer }} 

Это означает, что voteChoice.vars.value является экземпляром PollBundle\Entity\VoteChoice чтобы вы могли безопасно удалить поле answer из своей формы, если это не требуется для редактирования.