如何使用{{form(deleteForms)}}
在我的“索引”视图中呈现“DeleteForm”我已经按照this SO回答中描述的步骤进行了操作,但是我想再简化一下。
所描述的内容是将以下内容添加到indexAction:
//ProductController.php
//...
$deleteForms = array();
foreach ($entities as $entity) {
$deleteForms[$entity->getId()] = $this->createDeleteForm($entity->getId())->createView();
}
return $this->render('AppBundle:Product:index.html.twig', array(
'entities' => $entities,
'deleteForms' => $deleteForms,
));
在您的视图中添加以下内容: {%为实体中的实体%} // ... {{form_widget(deleteForms [entity.id])}} {{'links.admin.form.delete'| trans({},'FooBundle')}} ... // {%endfor%}
哪个工作正常,我的傻笑是为什么在任何地方手动渲染表单(更新/显示等),否则我只是这样做:
{% for entity in entities %}
//...
{{ form(deleteForms) }}
...//
{% endfor %}
所以我尝试了这个但是它导致了这个错误:
在渲染模板期间抛出了异常 (“Catchable Fatal Error:Argument 1传递给 Symfony \ Component \ Form \ FormRenderer :: renderBlock()必须是一个实例 Symfony \ Component \ Form \ FormView,给定的数组,调用 C:\ MyBundle \程序\缓存\ dev的\树枝\ F6 \ 75 \ ae2ae7bebde1f4083ba543a1680ecdb4b1c359141e57ac01862c94660f2e.php 在第176行并在AppBundle中定义了“):产品:index.html.twig at line 49。
我用Google搜索了一个错误,表明我需要调用“ - > createView()”,但这已经在foreach数组中被调用了。我试着在返回部分尝试这样做:
return $this->render('AppBundle:Product:index.html.twig', array(
'entities' => $entities,
'deleteForms' => $deleteForms->createView(),
));
所有这一切都会导致另一个错误:
错误:在非对象
上调用成员函数createView()
所以现在我完全迷失了。 任何指向正确方向的人都会非常感激。
答案 0 :(得分:3)
您似乎正在创建一个" deleteForms"将实体ID作为键,因此当您在模板中调用它们时,您应该使用相同的格式。
例如......
{% for entity in entities %}
//...
{{ form(deleteForms[entity.id]) }}
...//
{% endfor %}