Ссылаясь на это,
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 для решения этой проблемы.