Не удалось изменить метод формы с «post» на «delete» - PullRequest
0 голосов
/ 28 февраля 2019

Я впервые работаю с платформой Symfony и сталкиваюсь с проблемой, которую не могу решить самостоятельно.

У меня в классе 2 действия, и у них один и тот же маршрут.Я хочу, чтобы первое выполнялось, когда требование метода маршрута имеет тип «GET», а второе - когда метод имеет тип «DELETE».

Чтобы вызвать второе действие, я создал элемент формы и изменил егочтобы я мог получить метод «УДАЛИТЬ».

Однако форма все еще указывает на неправильное действие.

Не могли бы вы увидеть, где я допустил ошибку?

1- это часть моего шаблона

{% for property in properties %}
        <tr>
            <td>{{property.title}}</td>
            <td>
                <a class="btn btn-outline-dark" href="{{path('admin.property.edit', {id : property.id})}}">Editer</a>
                <form method="post" action="{{path('admin.property.delete', {id: property.id})}}">
                    <input type="hidden" name="_method" value="DELETE">
                    <input type="hidden" name="_token" value="{{csrf_token('delete'~ property.id)}}">
                    <button type="submit" class="btn btn-outline-danger">Supprimer</button>
                </form>
            </td>
        </tr>
    </tbody>
{% endfor %}

2- Это действия:

/**
 * @Route("admin/biens/{id}", name="admin.property.edit")
 */
    public function edit(Property $property, Request $request)
    {
        $form = $this->createForm(PropertyType::class, $property);
        $form->handleRequest($request);

        if ($form->isSubmitted() && $form->isValid()) 
        {
            $this->em->persist($property);
            $this->em->flush();

            return $this->redirectToRoute('admin.property.index');

        }

        return $this->render('admin/edit.html.twig',[
            'property' => $property,
             'form' =>$form->createView()
        ]);
    }

/**
 * @Route("admin/biens/{id}", name="admin.property.delete", methods={"DELETE"})
 */
    public function delete(Property $property, Request $request)
    {
        $submittedToken = $request->request->get('_token');
        if ($this->isCsrfTokenValid('delete'.$property->getId(), $submittedToken)) {

            $this->em->remove($property);
            $this->em->flush();

        }

        return $this->redirectToRoute('admin.property.index');

    }

1 Ответ

0 голосов
/ 28 февраля 2019

Вы должны установить методы для первого маршрута:

/**
 * @Route("admin/biens/{id}", name="admin.property.edit", methods={"GET, POST"})
 */

См. Документацию Symfony: https://symfony.com/doc/current/routing/requirements.html#adding-http-method-requirements

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