2015-07-26 3 views
0

В моем шаблоне Twig У меня есть цикл, который создает несколько число форм, как так:form_widget с динамическим именем формы

{% for thing in things %} 

{% set form_id = 'myform_' ~ thing.Id %} 

{% set form_name = attribute(form, 'myform_' ~ thing.Id) %} 


{{ form_widget(form_id) }} 
{{ form_widget(form_name) }} 


{% endfor %} 

Я хотел бы, чтобы это произвести следующие действия:

{{ form_widget(myform_1) }} 

    {{ form_widget(myform_2) }} 

.... и так далее.

Я оставил свои 2 неудачные попытки, (form_id и form_name), чтобы никому не предлагать предлагать их как возможные решения.

Подводя итог; Мне нужно, чтобы вставить динамически созданную стоимость (myform_1, myform_2) внутри
{{ form_widget() }}

+0

Пожалуйста, добавьте ваш код контроллера. –

ответ

0

вещей myform_1 и myform_2 просто переменные с объектом FormView, как вы определяете в контроллере. Я не знаю, может ли Twig разрешать вызов динамических переменных, хотя вы можете собирать эти объекты формы в массиве в контроллере, прежде чем перейти к просмотру. После этого шага вы можете просто перечислить этот массив. Он справится с проблемой, с которой вы столкнулись.

0

Не создавайте петлю в Twig: макет должен отображать только . Затем вы можете создавать формы в своем контроллере и отображать каждый из них.

См. this documentation в книге Symfony о том, как получить результат визуализированного шаблона. Вы можете объединить отдельные результаты рендеринга и вернуть ответ с полным контентом.

0

Вы можете оказать динамические поля образуют с динамическим именем в Twig с особой функцией Twig:

{{ attribute(object, method) }} 
{{ attribute(object, method, arguments) }} 
{{ attribute(array, item) }} 

С помощью этой функции вы можете легко генерировать динамическое имя строки для поля динамического в вашу форму, как это

{{ form_widget(attribute(form, 'myfielddynamicname' ~ var ~ ' lastchar')) }} 

С помощью этого переменного «вара» (массив или других типа) вы можете сделать много динамического имя формы, как:

  • myfielddynamicname Foo lastchar
  • myfielddynamicname бар lastchar
  • myfielddynamicname нео lastchar

Для большего понимания вы можете прочитать эту официальную функцию веточка ДОКУМЕНТАЦИЯ

здесь: attribute twig function documentation

Смежные вопросы