Перенаправить на маршрут - PullRequest
0 голосов
/ 01 октября 2018

Я хочу, чтобы некоторые маршруты «существовали», но для перенаправления на другой маршрут.

Например, это то, что я сделал с / route

/**
 * Homepage exists but redirect to projet
 *
 * @Route("/", name="homepage")
 * @Method("GET")
 */
public function indexAction() {
    return $this->redirectToRoute('projet_index');
}

/**
 * @Route("/projets/", name="projet_index")
 * @Method("GET")
 */
public function indexAction() {}

Я хочу знать, является ли это лучшим способом сделать это?

Ответы [ 2 ]

0 голосов
/ 02 октября 2018

Это несколько не по теме, но есть несколько грязный трюк, который вы можете использовать в аналогичном сценарии, когда вы хотите, чтобы несколько URL разрешались по одному маршруту, используя заполнители с требованиями и значениями по умолчанию :

/**
 * @Route("/{path<projets/|>?}", name="projet_index")
 */
public function someAction() {
    // ...
}

Это работает путем определения необязательного заполнителя (с синтаксисом {...}), который называется «путь» (хотя вы можете называть это как-то иначе).Для этого заполнителя заданы требования с синтаксисом <...>: это может быть либо "projets/", либо пустая строка "".Поэтому и URL-адреса "/" и "/projets/" соответствуют этому маршруту, и ничему другому, поскольку они не в форме "/{path}" с заполнителем пути, который соответствует его требованиям.

Пока чтохорошо.Но есть еще одна вещь, которую нам нужно сделать: присвоить ей значение по умолчанию с помощью ?, в противном случае такие методы, как redirectToRoute или функция Twig path, будут жаловаться, что мы не присваиваем им значение для всех заполнителей.Обратите внимание, что вы также можете использовать "/{path<projets/|>?projets/}", чтобы сделать значение по умолчанию URL-адресом "/projets/" вместо "/".

Я знаю, что это не совсем то, что хотел OP, но я думаю, что это может быть полезным трюком, чтобы узнатьи кто-то, имеющий вопрос, подобный ОП, может найти его полезным.

0 голосов
/ 01 октября 2018

Нет, лучший способ сделать это так просто:

/**
 * @Route("/", name="homepage")
 * @Route("/projets/", name="projet_index")
 * @Method("GET")
 */
public function indexAction() {
    // your code here
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...