Добавьте дополнительную переменную в корень аннотации с помощью symfony - PullRequest
0 голосов
/ 21 июня 2020

Я хочу добавить дополнительную переменную «тип» поэтому я делаю несколько root в аннотации. затем я пробую это

/**
 * @Route("/Theme/{id}/{type}", name="theme_show")
 * @Route("/Theme/{id}", name="theme_show")
 */
public function show($id, $type = null, Request $request, ObjectManager $manager){

и возвращаю

 return $this->render('blog/show.html.twig', [
                'type' => $type,
            ]);

и эту мою кнопку на go в этой функции

<a class="btn btn-dark btn-block" href="{{ path('theme_show', {'id' : theme.id, 'type' : 'question'})}}" role="button">Question</a> 

и этот мой URL-адрес, когда Я пытаюсь изменить страницу

http://127.0.0.1:8000/Theme/5?type=question

, но когда я сбрасываю содержимое типа в этом URL-адресе, я нахожу = null

Я также пытаюсь использовать уникальную аннотацию рутирования

        /**
         * @Route("/Theme/{id}/{type}", name="theme_show")
         */
        public function show($id, $type, Request $request, ObjectManager $manager){

и у меня эта ошибка

No route found for "GET /Theme/5" (from "http://127.0.0.1:8000/Theme/5?type=idee")

1 Ответ

0 голосов
/ 21 июня 2020

URL, который вы используете, не соответствует маршруту.

Ваш URL

http://127.0.0.1:8000/Theme/5?type=question

Правильный URL

http://127.0.0.1:8000/Theme/5/question

Маршрут

* @Route("/Theme/{id}/{type}", name="theme_show")

Если вы хотите использовать параметры запроса так же, как в своем URL. Вам нужно будет получить его из запроса.

$type = $request->query->get('type');

Далее у вас есть два маршрута с одинаковым именем. Я почти уверен, что это неверно, даже если он используется для того же метода. Если вы запустите php bin/console debug:router, вы увидите, что отображаются только самые последние.

Итак, вы либо измените имя одного из маршрутов и используйте свой шаблон /Theme/{id}/{type}, либо вы используете параметр запроса, как описано и избавьтесь от маршрута с помощью type.

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