Можно ли создать маршрут, указывающий на абсолютный внешний URL-адрес?

Google, а также Symfony Docs и Cookbook не помогли.

Допустим, у нас есть веб-сайт с именем http://www.example.com, работающий на Symfony2, и мы используем внешнюю службу часто задаваемых вопросов и службы поддержки (по какой-то причине), расположенную по адресу http://example.externalservice.com.

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

# ../config/routing.yml
[...]

info.faq:
    url: http://example.externalservice.com     # Surely isn't working

[...]

Это связано с тем, что в среднесрочной перспективе может возникнуть необходимость заменить службу поддержки самодельным решением, размещенным в приложении. Этот маршрут используется на разных страницах, поэтому хардкодить или заменять их все при смене службы поддержки — не вариант.

Итак, мои вопросы:

  • Это правильный подход или мы должны использовать расширение TWIG и параметр, расположенный либо в parameters.yml, либо в config.yml?
  • Если это правильный подход, можно ли создать такой маршрут, не изменяя сам компонент маршрутизации?

Заранее спасибо.


person thormeier    schedule 20.06.2013    source источник
comment
Ну, вы всегда можете создать обычный маршрут, указывающий на обычное действие в контроллере, и действие будет просто перенаправлять на внешний сайт.   -  person Bgi    schedule 20.06.2013


Ответы (2)


В ваши параметры.yml добавьте

external_url: http://example.externalservice.com 

затем в вашем контроллере:

$url = $this->container->getParameter('external_url');
return $this->redirect($url);
person rpg600    schedule 04.07.2013
comment
Мы сделали это, потому что вызов внешнего веб-сервиса нуждался в некоторой бизнес-логике, которую нужно было реализовать в контроллере: нам нужно было предварительно заполнить некоторые поля формы во внешней контактной форме данными от текущего пользователя с помощью параметров GET ( например адрес электронной почты и т. д.), так что это был путь. Большое спасибо! - person thormeier; 02.09.2013

Из документации Symfony2:

root:
    path:  /
    defaults:
        _controller: FrameworkBundle:Redirect:urlRedirect
        path: http://www.google.fr
        permanent: true

Для получения дополнительной информации о перенаправлении прочитайте документацию ниже:

Как настроить перенаправление на другой маршрут без специального контроллера

person Picoss    schedule 04.07.2013