我使用symfony2框架,我有一个模板,显示实体列表(例如我的产品)我想创建一个单独的表单来删除,激活/停用以及列表中的其他一些操作,实际上我已经完成了它之前,但在那个场合我创建了一些动作(例如toggleActiveAction(Product $ product))而没有使用表单,只是通过创建一个链接,但我认为在这种方法中我有跨站点请求伪造攻击的危险,有人建议为每个实体创建一个表单,但我认为这不是一个好方法,我该如何处理?
答案 0 :(得分:0)
使用与显示列表相同的结构。 要在视图中显示活动产品,您可以使用:
{% if product.active %}
{{ product.attribute }} //It will put the products attribute in the browser if it is active
{%endif%}
此处twig检查product.active ==(=)是否为true。 您可以在for循环中使用它来遍历产品。
{% for product in products %}
//The if block could go here.
{% enfor %}
答案 1 :(得分:0)
/**
*
* @Route("/news/update/{id}", name="news_update")
*/
public function updateAction(Request $request, $id) {
//Here I call my service
$newsService = $this->get('app.news_service');
//Here I receive the Entity I want to edit
$toUpdate = $newsService->fetchById($id);
//Here I create the form that I have defined in AppBundle\Forms
$form = $this->createForm(new NewsForm(), $toUpdate);
$form->handleRequest($request);
if ($form->isSubmitted() && $form->isValid()) {
//Once the form is submitted my newsService updates the Entity in the database.
$newsService->update($toUpdate);
//I redirect overview
return $this->redirectToRoute('news_show', array(), 301);
}
return $this->render('default/news/updateNews.html.twig', array(
'base_dir' => realpath($this->container->getParameter('kernel.root_dir') . '/..'),
'form' => $form->createView(),
));
}
这将首先将您带到用户提交以保存更改的表单。