Маршрут Symfony с несколькими необязательными параметрами

прежде всего спасибо за чтение. У меня проблема с маршрутами Symfony. Я получил один маршрут, который получает несколько параметров:

my_route:
path:     /route/{page}/{paramA}/{paramB}/{paramC}
defaults: { _controller: MyBundle:MyController:index, page: null, paramA: null, paramB: null, paramC: null }

Проблема с «paramA». Это текст для фильтрации результатов, и он может быть не установлен, но могут быть «paramB» и «paramC».

Так что мне нужен этот маршрут для обработки, например:

/route/1/paramB/paramC

и получите в контроллере:

paramA = null, paramB="paramB", paramC="paramC"

Прямо сейчас, когда я обращаюсь:

/route/1/paramB/paramC

Я получаю это в контроллере:

paramA="paramB", paramB="paramC", paramC=null

Любая помощь приветствуется. Еще раз спасибо.

0

Решение

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

Так:

/article?page=0&limit=10

не:

/article/0/10

Или же:

/user?active=1

не:

/user/1

И так далее.

Если у вас есть сложный пример, поделитесь им с нами.

4

Другие решения

Это не может быть сделано. Как упомянуто в документации Symfony

Вы можете иметь более одного необязательного заполнителя,
но все после
необязательный заполнитель должен быть необязательным.

Вы добавили следующее к ключу по умолчанию,

page: null, paramA: null, paramB: null, paramC: null

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

Ссылка: http://symfony.com/doc/current/book/routing.html#adding-requirements

2

По вопросам рекламы [email protected]