Symfony: как показать первый рут в адресной строке, доступ ко второму - PullRequest
1 голос
/ 19 марта 2019

У меня есть контроллер с двумя маршрутами:

/**
*@Route("/first", name="important_route")
*@Route("/second")
**/
public function index() {
    return new Response("Hi");
}

Но мне нужно, чтобы при доступе пользователя по маршруту "/ second" в адресной строке браузера показывалось "/ first". На самом деле я уже сделал это, но я не уверен, что это лучший способ.

Мое решение:

Я создал новый контроллер:

/**
*@Route("/second")
**/
public function redirectToIndex() {
    return $this->redirectToRoute("first");
}

Затем я удалил второй маршрут в исходном контроллере:

/**
*@Route("/first", name="important_route")
**/
public function index() {
    return new Response("Hi");
}

Ответы [ 2 ]

0 голосов
/ 19 марта 2019

Создайте новый контроллер:

/**
*@Route("/second")
**/
public function redirectToIndex() {
    return $this->redirectToRoute("first");
}

Затем удалите второй маршрут в исходном контроллере:

/**
*@Route("/first", name="important_route")
**/
public function index() {
    return new Response("Hi");
}
0 голосов
/ 19 марта 2019

Вы уже решили свою проблему. Если вам нужно, чтобы пользователь увидел /first в адресной строке браузера, вам нужно сделать переадресацию.

Но перенаправления могут быть установлены на уровне веб-сервера и на уровне приложения. Вы делаете перенаправление в приложении. Этот способ более гибкий, поскольку у вас есть доступ к базе данных, но он не оптимален для использования ресурсов сервера.

Второй способ перенаправления пользователя - настроить правило перенаправления на вашем веб-сервере. Этот способ зависит от того, какой веб-сервер вы используете, и у вас нет доступа к базе данных. Этот способ полезен, когда вы хотите «кэшировать» свои маршруты и не запускать приложение Symfony каждый раз, когда пользователь запрашивает страницу по сокращенной ссылке.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...