удалить строку из таблицы базы данных в Symfony - PullRequest
0 голосов
/ 25 марта 2019

Я хочу удалить выбранную строку из 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 голосов
/ 25 марта 2019

В вашем действии контроллера вы делаете:

$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 }) %}
0 голосов
/ 25 марта 2019

Я бы предложил работать с аннотациями для маршрутов. Облегчает дела.

То, что вы делаете, далеко от правильного способа сделать это.

Ваша функция удаления также не будет работать должным образом ...
Вы удаляете с помощью $em->remove($entite), а затем создаете с помощью $em->persist($entite).
Это наверняка не закончится хорошо.

Твоя веточка - беспорядок ...
Мы не создаем URL-адреса так, как вы. Для этого есть расширение веточка path.

Я бы предложил начать читать о Symfony:

Создание простой формы

Сохранить / Выбрать / Обновить / Удалить объект в базе данных

Контроллеры

Ссылки выше для Symfony 3.4.
Обязательно измените версию с выпадающим списком на странице на соответствующую версию Symfony, если вы не используете Symfony 3.4

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...