Как создать маршрут в symfony 2, который отображает внешний URL?

Ссылаясь на это,

http://symfony.com/doc/current/book/routing.html

мы можем сопоставить шаблон url с контроллером и действием

приложение / Config / routing.yml

blog_show: path: /blog/{slug} defaults: { _controller: AcmeBlogBundle:Blog:show } 

Я хочу сопоставить путь к внешнему URL.

приложение / Config / routing.yml

 blog_show: path: /blog/{slug} defaults: "www.example.com/blog" 

Требование: мой текущий сайт находится в кохане, я постепенно портирую его на symfony 2. Для моего URL-адреса symfony2 kohana, как внешние URL-адреса, я хочу настроить эти URL-адреса в маршрутизации и использовать их стандартным образом,

например, в Twig,

 <a href="{{ path('blog_show'}}"> Read this blog post. </a> 

Поэтому позже, когда я переношу свои страницы в Symfony, мне придется изменить только файл маршрутизации, чтобы я мог использовать тот же ключ blog_show для ссылки на url, и я не буду менять все файлы, в которых я использовал URL.

Вы можете сделать это, используя один из контроллеров платформы Symfony, хотя я не уверен, как это будет работать с параметрами:

 blog_show: path: /blog/{slug} defaults: _controller: FrameworkBundle:Redirect:urlRedirect path: "http://example.com/blog" permanent: true по blog_show: path: /blog/{slug} defaults: _controller: FrameworkBundle:Redirect:urlRedirect path: "http://example.com/blog" permanent: true 

Обратите внимание, что path: /blog/{slug} захватывает пул напрямую, но path: "http://example.com/blog/{slug}" не работает.

Источник : http://symfony.com/doc/current/cookbook/routing/redirect_in_config.html

Начиная с Symfony 2.2 это возможно, добавив ограничение хоста к маршрутам:

routing.yml

 user_homepage: path: /path/to/whatever host: "sub.domain.ext" defaults: _controller: forExampleAnyNamespaceBundle:Controller:action по user_homepage: path: /path/to/whatever host: "sub.domain.ext" defaults: _controller: forExampleAnyNamespaceBundle:Controller:action 

В этом выпуске есть официальное сообщение в блоге: http://symfony.com/blog/new-in-symfony-2-2-url-host-support-in-the-routing

Функция маршрутизатора Symfony не работает именно так …

Я предлагаю вам создать расширение Twig для этого. Подробнее об этом читайте здесь: http://symfony.com/doc/current/cookbook/templating/twig_extension.html

Вы можете создать функцию, которая очень похожа на обычную функцию url (), поэтому вы можете выполнить миграцию как можно проще.

 {{ legacyUrl('blog_post', {slug: 'my-blog-post'}) }} 

После того, как вы перенесли блог в Symfony, вам нужно создать маршрут «blog_post» и изменить «legacyUrl» на «url».

Кажется, нет никакого родного метода Symfony для решения этой проблемы.