прежде всего спасибо за чтение. У меня проблема с маршрутами 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
Любая помощь приветствуется. Еще раз спасибо.
Необязательные параметры, подобные этим, для фильтрации, сортировки и разбивки на страницы должны передаваться как параметры запроса, а параметры маршрута должны указывать только на нужный ресурс.
Так:
/article?page=0&limit=10
не:
/article/0/10
Или же:
/user?active=1
не:
/user/1
И так далее.
Если у вас есть сложный пример, поделитесь им с нами.
Это не может быть сделано. Как упомянуто в документации Symfony
Вы можете иметь более одного необязательного заполнителя,
но все после
необязательный заполнитель должен быть необязательным.
Вы добавили следующее к ключу по умолчанию,
page: null, paramA: null, paramB: null, paramC: null
Так что все после ключа page
должен быть там в URL, то же самое относится и к paramA
, Поэтому, если вы хотите пропустить одно значение, вы должны пропустить следующие значения в вашем случае.
Ссылка: http://symfony.com/doc/current/book/routing.html#adding-requirements