我的第一个symfony2项目是存储在数据库中的来宾列表(在活动中被邀请)。我有
最后是控制器中的一个“createGuest”方法,一切正常。
我无法从数据库中删除来宾。我已经阅读了网络上的每一篇教程,包括官方的Symfony2书籍;它所说的是:
删除对象
删除对象非常相似,但需要调用实体管理器的删除()方法:
$em->remove($product);
$em->flush();
关于如何将控制器deleteAction($id)与细枝模板连接,它没有说更多的内容(甚至“更新对象”部分也缺少文档)。我要做的是使用viewGuests操作和viewGuests细枝模板列出所有来宾,每行旁边都有一个删除图标,您应该单击该图标删除条目。很简单,但我找不到任何文档,也不知道从哪里开始。
public function deleteGuestAction($id)
{
$em = $this->getDoctrine()->getEntityManager();
$guest = $em->getRepository('GuestBundle:Guest')->find($id);
if (!$guest) {
throw $this->createNotFoundException('No guest found for id '.$id);
}
$em->remove($guest);
$em->flush();
return $this->redirect($this->generateUrl('GuestBundle:Page:viewGuests.html.twig'));
}
Symfony很聪明,知道如何自己制作find()
:
public function deleteGuestAction(Guest $guest)
{
if (!$guest) {
throw $this->createNotFoundException('No guest found');
}
$em = $this->getDoctrine()->getEntityManager();
$em->remove($guest);
$em->flush();
return $this->redirect($this->generateUrl('GuestBundle:Page:viewGuests.html.twig'));
}
要在控制器中发送id,请使用{{path('your_route',{'id':guest.id}}}
删除从...#id=...;
protected function templateRemove($id){
$em = $this->getDoctrine()->getManager();
$entity = $em->getRepository('XXXBundle:Templates')->findOneBy(array('id' => $id));
if ($entity != null){
$em->remove($entity);
$em->flush();
}
}
据我所知,你在努力把什么放入你的模板中。
我将展示一个示例:
<ul>
{% for guest in guests %}
<li>{{ guest.name }} <a href="{{ path('your_delete_route_name',{'id': guest.id}) }}">[[DELETE]]</a></li>
{% endfor %}
</ul>
现在发生的事情是它迭代来宾中的每个对象(如果对象集合的名称不同,则必须重命名它!),显示名称并放置正确的链接。路由名称可能不同。