Как получить идентификатор элемента по клику с помощью symfony

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

        <ul>
            {% for quote in agency.quotes %}
                <li><a href = "{{ path('user_individualQuote') }}"> {{ quote.prospect.fullname }} 
                </a></li>
            {% endfor %}
        </ul>

Это контроллер страницы:

/**
 * @Route("/individualQuote", name = "user_individualQuote", methods = {"GET","POST"})
 **/
public function getIndividualQuote(ProspectRepository $prospectRepository): Response
{


    return $this->render('user/_individualQuote.html.twig', [
        'prospect' => $prospectRepository->findAll(),

    ]);
}

Моя база данных:

Журнал исключений, запрос информации:

Может начать здесь.

Cerad 19.12.2020 16:05
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Symfony Station Communiqué - 17 февраля 2023 г
Symfony Station Communiqué - 17 февраля 2023 г
Это коммюнике первоначально появилось на Symfony Station , вашем источнике передовых новостей Symfony, PHP и кибербезопасности.
Управление ответами api для исключений на Symfony с помощью KernelEvents
Управление ответами api для исключений на Symfony с помощью KernelEvents
Много раз при создании api нам нужно возвращать клиентам разные ответы в зависимости от возникшего исключения.
0
1
514
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Похоже, что маршрут getIndividualQuote вернет все кавычки.

Один на @ParamConverter от SensioFrameworkExtraBundle. (Установить с помощью composer require sensio/framework-extra-bundle)

Итак, начните с этого -

<?php

use namespace App\Entity\Prospect; // Or wherever your Prospect class is

/**
 * @Route("/individualQuote/{id}", name = "user_individualQuote", methods = {"GET","POST"})
 **/
public function getIndividualQuote(Prospect $prospect): Response
{
    return $this->render('user/_individualQuote.html.twig', [
        'prospect' => $prospect
    ]);
}

Ключевое изменение заключается в том, что маршрут основан на анализе $id из URL-адреса и поиске Prospect на основе его идентификатора. https://symfony.com/doc/current/routing.html#parameter-conversion

Затем вам нужно будет передать этот идентификатор в URL-адрес, указав некоторые дополнительные параметры вспомогательной функции twig path. {id: quote.prospect.id}.

<ul>
     {% for quote in agency.quotes %}
         <li>
            <a href = "{{ path('user_individualQuote', {id: quote.prospect.id}) }}"> {{ quote.prospect.fullname }}</a>
         </li>
     {% endfor %}
</ul>

хорошая новость в том, что я наконец-то получил идентификатор в своем URL-адресе. Но я получил эту ошибку: «Аргумент 2, переданный в App\Controller\UserController::getIndividualQuote(), должен иметь тип int, указанная строка»

LIONEL LIONEL 19.12.2020 19:00

Что происходит, когда вы {{ dump(quote.prospect.id) }} где-то в своем шаблоне ветки?

Cameron Hurd 19.12.2020 19:02

Возможно, просто нужно преобразовать в int с помощью фильтра. :) ` <a href = "{{ path('user_individualQuote', {id: quote.prospect.id|int}) }}"> {{ quote.prospect.fullname }}</a>`

Cameron Hurd 19.12.2020 19:03

я пробовал дамп, но ошибка блокирует его. Я тоже пытался добавить "|int". Та же ошибка.

LIONEL LIONEL 19.12.2020 19:19

Не знаю, что означает "ошибка блокирует его". :(

Cameron Hurd 19.12.2020 19:19

Также мой адрес выглядит так: 127.0.0.1:8000/user/individualQuote/%7B%24id%7D?id=42

LIONEL LIONEL 19.12.2020 19:22

извините, это значит, что дамп, вероятно, скрыт за исключением

LIONEL LIONEL 19.12.2020 19:23

Понятно, похоже, что метод маршрута вашего контроллера не улавливает параметр id. Позвольте мне изменить мой ответ немного больше информации!

Cameron Hurd 19.12.2020 19:25

хорошо, спасибо, я только что отредактировал свой пост (добавьте новый экран запроса информации в исключение), если это может помочь

LIONEL LIONEL 19.12.2020 19:35

Хм,. а если просто поставить {{ path('user_individualQuote', quote.prospect.id) }}?

Cameron Hurd 19.12.2020 19:37

такой же. Ничего не меняется. Я также пытался удалить "id:quote.prospect.id", тоже ничего не изменилось.

LIONEL LIONEL 19.12.2020 19:52

О, подождите, исключение почти такое же («должно быть типа массива, задано int, вызвано») Я также пытался удалить «id:quote.prospect.id», тоже ничего не изменилось.

LIONEL LIONEL 19.12.2020 19:59

Боюсь, вы должны начать с основной статьи и дойти до этого!

Cameron Hurd 19.12.2020 19:59

о, и дамп работает, и я получил нормальный URL-адрес (127.0.0.1:8000/user/individualQuote/42). Он показывает мне идентификатор каждого имени. Хорошо, да, я так думаю. Хорошо, что у меня есть удостоверение личности. Я постараюсь найти проблему. Спасибо за вашу помощь.

LIONEL LIONEL 19.12.2020 20:00

наконец-то это работает, я просто меняю «ProspectRepository на Prospect $ prospect». Большое спасибо за вашу помощь @Cameron

LIONEL LIONEL 19.12.2020 20:36

Это то, что я сделал в своем отредактированном ответе! Вы бы согласились? :)

Cameron Hurd 19.12.2020 20:38

Да, это именно то, что в вашем отредактированном ответе!

LIONEL LIONEL 19.12.2020 21:49

Другие вопросы по теме