从symfony中的数据库表中删除行

时间:2019-03-25 08:43:17

标签: symfony

我想从显示订单列表的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)

2 个答案:

答案 0 :(得分:0)

我建议使用路线注释。使事情变得更容易。

您正在做的事情远非正确的解决方法。

您的删除功能也将无法正常工作...
您要使用$em->remove($entite)进行删除,然后使用$em->persist($entite)进行创建。
这样做肯定不会成功。

你的树枝很烂...
我们不会像您那样创建URL。有twig extension path可以做到。

我建议开始阅读有关Symfony的文章:

Creating a Simple Form

Persist/Fetch/Update/Delete an Object in the Database

Controllers

上面的链接适用于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 }) %}