【发布时间】:2013-04-12 22:27:36
【问题描述】:
我有一个来自数据库的条目列表。我想在每一行的末尾都有一个“删除按钮”,这样用户就不必先去编辑/显示页面来删除条目。
我尝试使用 csrf 令牌创建一个隐藏的输入字段,如下所示:
return $this->createFormBuilder()
->getForm()
;
这将输出:
<div id="form">
<input type="hidden" id="form__token" name="form[_token]" value="6c98ebfa9df07.....">
</div>
我将表单的其余部分放在树枝模板中,以便每个表单根据条目的 id 都有自己的操作路径。
不幸的是,twig 模板中只有第一个
{{ form_widget(delete_form) }}
将被渲染。
如何更频繁地使用此隐藏字段? 或者有没有办法以不同的方式做这件事?
感谢您的帮助
public function indexAction()
{
$em = $this->getDoctrine()->getManager();
$deleteForm = $this->createDeleteForms();
$entities = $em->getRepository('IntranetServicesBundle:Laender')->findAll();
return $this->render('IntranetServicesBundle:Laender:index.html.twig', array(
'entities' => $entities,
'delete_form' => $deleteForm->createView(),
));
}
private function createDeleteForms()
{
return $this->createFormBuilder()
->add('id', 'hidden')
->getForm()
;
}
【问题讨论】:
-
你不能只创建一个像
object/delete/{id}这样的路由并让它去你的控制器的删除操作吗?然后,您只需要在这条路线上添加一个<a>链接就可以了。或者你想要更复杂的东西? -
是的,可以,但我确实想要 csrf 保护....