我正试图用Symfony和Twig随机打印出相同的表格,但我似乎无法弄明白。
到目前为止,我想到的是在控制器中创建X个数量的表单。
foreach ($participations as $e) {
$id = $e->getId();
$formName = "form_doc_".$id;
${$formName} = $this->createForm(DocumentType::class, $documentation);
$viewVar[$formName] = ${$formName}->createView();
}
在TWIG中,我将字符串变量分别设置为$ formName,并使用此变量设置表单属性。
{% set formName = "form_doc_" ~ participation.id %}
{% set subForm = attribute(form, formName) %}
{{ form_start(subForm) }}
{{ form_widget(subForm.path) }}
{{ form_end(subForm) }}
当我尝试打印表单时,我收到错误消息。
“属性”form_doc_40“和”form_doc_40()“,”getform_doc_40()“/”isform_doc_40()“或”__call()“之一都不存在,并且在”Symfony \ Component \“类中具有公共访问权限表格\ FormView“在admin / volunteerParticipations.html.twig第97行”
希望那里有人可以帮助我;)Thx
答案 0 :(得分:1)
您可以尝试使用这样的表单数组:
控制器:
/**
* @Route("/example", name="example_action")
* @Template("example.html.twig")
*/
public function exampleAction(Request $request)
{
$forms = array();
$views = array();
foreach ($participations as $e) {
$form = $this->createForm(DocumentType::class, $documentation);
$forms[] = $form;
$views[] = $form->createView();
}
foreach ($forms as $form)
{
$form->handleRequest($request);
if (!$form->isSubmitted()) continue;
if ($form->isValid())
{
// Normal form stuff, eg. persisting
}
}
// return views to twig template
return array("forms" => $views);
}
查看:
{%- for form in forms -%}
{{ form_start(form) }}
{{ form_widget(form.path) }}
{{ form_end(form) }}
{%- endfor -%}