Это несколько не по теме, но есть несколько грязный трюк, который вы можете использовать в аналогичном сценарии, когда вы хотите, чтобы несколько URL разрешались по одному маршруту, используя заполнители с требованиями и значениями по умолчанию :
/**
* @Route("/{path<projets/|>?}", name="projet_index")
*/
public function someAction() {
// ...
}
Это работает путем определения необязательного заполнителя (с синтаксисом {...}
), который называется «путь» (хотя вы можете называть это как-то иначе).Для этого заполнителя заданы требования с синтаксисом <...>
: это может быть либо "projets/"
, либо пустая строка ""
.Поэтому и URL-адреса "/"
и "/projets/"
соответствуют этому маршруту, и ничему другому, поскольку они не в форме "/{path}"
с заполнителем пути, который соответствует его требованиям.
Пока чтохорошо.Но есть еще одна вещь, которую нам нужно сделать: присвоить ей значение по умолчанию с помощью ?
, в противном случае такие методы, как redirectToRoute
или функция Twig path
, будут жаловаться, что мы не присваиваем им значение для всех заполнителей.Обратите внимание, что вы также можете использовать "/{path<projets/|>?projets/}"
, чтобы сделать значение по умолчанию URL-адресом "/projets/"
вместо "/"
.
Я знаю, что это не совсем то, что хотел OP, но я думаю, что это может быть полезным трюком, чтобы узнатьи кто-то, имеющий вопрос, подобный ОП, может найти его полезным.