我想从显示订单列表的html表中删除所选行。这是表代码:
{% for reservation in ListeDesReservations %}
<tr>
//columns ... //
<td class="text-center text-lg text-medium">{{ reservation.seat}}</td>
<td class="text-center text-lg text-medium">{{ reservation.getEvent().getPrix()}}</td>
{% if is_granted("IS_AUTHENTICATED_REMEMBERED") %}
{% set url = absolute_url(asset('')) ~ 'app_dev.php/supprimerReservation/' ~ reservation.id %}
{% else %}
{% set url = "OTHER_URL" %}
{% endif %}
<td class="text-center"><a href="{{url}}" ></a></td>
</tr>
{% endfor %}
</tbody>
</table>
这是我在控制器中的删除方法:
public function SupprimerReservationAction($idReservation){
$em = $this->getDoctrine()->getEntityManager();
$entite = $em->getRepository('techeventBundle:reservation')->find($idReservation);
$em->remove($entite);
$em->persist($entite);
$em->flush();
//Affichage
$iduser = $this->getUser()->getId();
return $this->redirectToRoute('affichage', ['iduser' => $iduser]);
//Affichage
}
这是我的路由文件:
affichage:
path: /afficherPanier/{iduser}
defaults: { _controller: reservationBundle:Default:afficherPanier }
supprimerReservation:
path: /supprimerReservation/{idReservation}
defaults: { _controller: reservationBundle:Default:SupprimerReservation }
问题是,当我单击删除链接时,它会将我重定向到同一链接 (app_dev.php / afficherPanier / 2),而它应该将我重定向到删除路由(app_dev.php / supprimerReservation / 27)
答案 0 :(得分:0)
我建议使用路线注释。使事情变得更容易。
您正在做的事情远非正确的解决方法。
您的删除功能也将无法正常工作...
您要使用$em->remove($entite)
进行删除,然后使用$em->persist($entite)
进行创建。
这样做肯定不会成功。
你的树枝很烂...
我们不会像您那样创建URL。有twig extension path
可以做到。
我建议开始阅读有关Symfony的文章:
Persist/Fetch/Update/Delete an Object in the Database
上面的链接适用于Symfony 3.4。
如果您不使用Symfony 3.4,请确保将页面上的下拉列表选择的版本更改为相应的Symfony版本。
答案 1 :(得分:0)
在控制器操作中,您正在执行以下操作:
$em->remove($entite);
$em->persist($entite);
您要删除然后保存该实体。删除$em->persist($entite);
行。
您的重定向是正常行为,因为您在控制器操作return $this->redirectToRoute('affichage', ['iduser' => $iduser]);
中请求了重定向
注意:这不是应该如何构建路径{% set url = absolute_url(asset('')) ~ 'app_dev.php/supprimerReservation/' ~ reservation.id %}
Twig有一个名为path
的方法,该方法可让您根据路由名称构建URL
{% set url = path('supprimerReservation', {'idReservation': reservation.id }) %}