symfony Location -- как в symfony получить протокол и хост

Для увеличения "переносимости" проекта, его универальности рекомендуется все пути создавать "динамически", используя различные методы, а не хардкодить.

Допустим, нам требуется передать заголовок Location с абсолютным адресом страницы:

return new Response (['Location' => 'http://my.domen.name/path/in/application']);

Как это сделать

В Symfony (в контроллере):

  • Получить протокол (Http) можно так:
    $request->getScheme();
  • Получить доменное имя (my.domen.name) можно так:
    $request->getHost();
  • Также можно достать название протокола и домен одновременно:
    $request->getSchemeAndHttpHost();
  • Получить путь внутри приложения (/path/in/application) можно по его атрибуту "name" (который можно установить, используя маршрутизацию с помощью аннотаций), вытащив метод генерации URL из базового redirectToRoute():
    $this->generateUrl('registration');

Итого, у меня получилось так:

return new Response (['Location' =>$request->getSchemeAndHttpHost() . $this->generateUrl('registration')]);

Happy codding ♥)

vedro-compota's picture

Допустим, нам требуется передать заголовок Location с абсолютным адресом страницы:

к сожалению движок в данный момент разворачивает url в html и потому просто кодом их оформлять не получается.

_____________
матфак вгу и остальная классика =)

vedro-compota's picture

при создании движка важно помнить, что абсолютные адреса используются только для ссылок на другие сайты.
Иначе у вас будут проблемы, например при развороте системы.

_____________
матфак вгу и остальная классика =)

melisa's picture

в этой статье как раз и указывается решние данной проблемы