Проблемы с маршрутами (Symfony 5.0.11)

#php #symfony #routes

Вопрос:

Я новичок в Symfony и использую v5.0.11 как часть рабочего проекта (inb4: поскольку это работа для компании, в которой я работаю, я мало контролирую обновление версии).

Моя проблема заключается в следующем: у меня есть контроллер (который расширяет файл «CommonController»), содержащий различные маршруты, ведущие к различным URL-адресам, которые должны запускаться кнопкой формы с несколькими полями. Первый маршрут в этом контроллере (за исключением того, который ведет на главную страницу) — «@Route: /global/поиск/», связанный с «функцией глобального поиска». Следующие маршруты (например, @Route: /global/product_code/{product_code}) определены далее по документу, с отступом на том же уровне и расположены за пределами этой первой функции «Глобальный поиск».

В зависимости от заполнения полей формы заранее; он должен отправить пользователя по определенному URL-адресу, связанному с указанным полем (например: если я заполняю категорию «код продукта», он должен отправить меня по адресу, например «/global/product_code/{product_code}».

Однако, когда я заполняю любое поле и нажимаю кнопку, оно все равно отправляет меня на URL-адрес общего поиска («глобальный/поиск») вместо того, который я указал выше, например»глобальный/код продукта».

У тебя есть какие-нибудь идеи, почему это так ? Я просмотрел документы Symfony и Doctrine, но не смог найти на них ответа; и из того, что я прочитал, я не могу расставлять приоритеты маршрутов, поскольку я нахожусь в 5.0.11.

Заранее спасибо за любую помощь.

NB: поскольку моя работа касается сектора и компании, связанных секретом с правительством моей страны и несколькими фирмами; Я не могу делиться кодом онлайн с третьими лицами; поэтому я постараюсь предоставить столько информации о коде, сколько необходимо.

Комментарии:

1. Вы можете использовать bin/console debug:отладка контейнера:маршрутизатор, чтобы проверить, действительно ли это вопрос приоритета маршрута. Если это так, то одним из обходных путей является использование маршрутов. файл yaml для создания маршрутов вместо аннотаций. Или, если вы не хотите полностью отказываться от аннотаций, вы можете добавить в файл маршрутизации только те маршруты, которые хотите повысить приоритет. Но я почти уверен, что проблема не имеет ничего общего с приоритетом. Я бы предложил другие варианты, но они совершенно секретны.

2. Пожалуйста, поделитесь более подробной информацией, например, соответствующим кодом. Кроме того, имейте в виду, что Symfony 5.0.11 довольно устарела, так как все виды поддержки этой версии закончились в июле 2020 года

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

Ответ №1:

Без некоторых примеров кода было бы трудно определить проблему и является ли она проблемой вообще.

Но вот несколько идей, как сузить круг проблем.

Первый:

Однако, когда я заполняю любое поле и нажимаю кнопку, оно все равно отправляет меня на URL-адрес общего поиска («глобальный/поиск») вместо того, который я указал выше, например»глобальный/код продукта».

Если вы используете формы symfony для создания и/или визуализации форм, это, вероятно <form action=""> , атрибут. Я предполагаю, что он либо пустой (что приведет к отправке его по тому же URL-адресу. В вашем случае это /global/search ) или он настроен на определенный маршрут. (например /global/search ) В любом случае вам следует рассмотреть предложение @Cerads проверить все доступные маршруты, чтобы узнать больше и выяснить, за какое действие контроллера отвечает /global/product_code/{product_code} . Если есть несколько маршрутов, соответствующих этому шаблону, у них должно быть «название маршрута», чтобы вы могли искать это название маршрута во всем проекте.

bin/console debug:router или bin/console debug:router | grep global

Второй:

В зависимости от того, какие поля формы заполняются заранее; она должна отправить пользователя по определенному URL-адресу, связанному с

Чтобы каким-то образом изменить URL-адрес отправки пользователями, для ввода требуется JavaScript. Независимо от того, отправляете ли вы значение одного поля через AJAX или просто «заменяете» action атрибут формы, вам необходимо проверить соответствующий код JavaScript.