Ошибка при передаче данных из Twig в контроллер - PullRequest
0 голосов
/ 21 мая 2019

Я пытаюсь передать некоторые данные из моей ветки в контроллер, но я получаю эту ошибку

No route found for "POST /agent/": Method Not Allowed (Allow: GET)

Позвольте мне объяснить, что я сделал, у меня есть список, и у каждого автомобиля в этом списке есть кнопка, я нажимаю кнопку, чтобы показать модальную форму, которая позволяет мне создать билет, связанный с этим автомобилем.

Нажатие на эту кнопку передает идентификатор и номер выбранного автомобиля в форму. Я смог обработать форму, ничего не передавая, но всякий раз, когда я пытаюсь передать идентификатор автомобиля, я получаю сообщение об ошибке.

Мой код: index.html.twig

      {% for parking in user.parkings %}

         <table id="file_export" class="table table-striped table-bordered">
                <tbody>
            {% for car in car %}
                <tr>
                <td>
               {{ car.matricule }}
                </td>
                <td>
              <span class="timer" data-expires="{{ car.getExpiresAt() }}"> 
              </span>

                </td>
             <td>

<button type="button" class="btn btn-dark" href="{{ path('new_amende', {'id': car.id},{'number': car.number}) }}" data-toggle="modal" data-target="#createmodel" data-whatever="{{ car.id }}">
ticket                                
</button>
            {{render(controller('App\\Controller\\AgentController:newAmende')) }}

                </td>
                </tr>
             {% endfor %}

Контроллер

    /**
     * @Route("/{id}/new", name="new_ticket", methods={"GET","POST"})
     */
    public function newTicket(Request $request, Car $car): Response
    {
        $ticket = new Ticket();
        $form = $this->createForm(TicketType::class, $ticket);
        $form->handleRequest($request);

        if ($form->isSubmitted() && $form->isValid()) {
            $this->addFlash('success','ticket added !');

            $entityManager = $this->getDoctrine()->getManager();
            $entityManager->persist($ticket);
            $entityManager->flush();

            return $this->redirectToRoute('agent');


         }

        return $this->render('Agent/modal.html.twig', [
            'ticket' => $ticket,
            'form' => $form->createView(),
        ]);
    }

Редактировать вот мой другой контроллер


    /**
     * @Route("/", name="agent", methods={"GET"})
     */
    public function index(): Response
    {

        $use = $this->get('security.token_storage')->getToken()->getUser();

        $user = $this->getUser();   
        $parkingz=$this->getUser()->getParkings();

        return $this->render('Agent/Agent.html.twig', [
            'user' => $user,
            'parkings'=>$parkings,
        ]);
    }

1 Ответ

1 голос
/ 21 мая 2019

Вы пытаетесь связаться с / agent с помощью POST, в то время как вы разрешаете только GET-запрос на этом маршруте No route found for "POST /agent/": Method Not Allowed (Allow: GET).

Поэтому измените ваш индекс (), чтобы разрешить POST:

 /**
 * @Route("/", name="agent", methods={"GET","POST"})
 */
public function index(): Response
{
...