如何在symfony 2中创建映射到外部URL的路由?

vis*_*hal 8 php symfony twig

参考这个,

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

我们可以将url模式映射到控制器和动作

应用程序/配置/ routing.yml中

blog_show:
    path:      /blog/{slug}
    defaults:  { _controller: AcmeBlogBundle:Blog:show }
Run Code Online (Sandbox Code Playgroud)

我想将路径映射到外部URL.

应用程序/配置/ routing.yml中

blog_show:
    path:      /blog/{slug}
    defaults:  "www.example.com/blog"
Run Code Online (Sandbox Code Playgroud)

要求是,我现在的网站在kohana,我逐渐将它移植到symfony 2.对于我的symfony2 app kohana URL就像外部网址,我想在路由中配置这些网址并以标准方式使用它们,

例如在Twig,

<a href="{{ path('blog_show'}}">
  Read this blog post.
</a>
Run Code Online (Sandbox Code Playgroud)

所以稍后当我将我的页面移植到Symfony时,我将只需要更改路由文件,这样我就可以使用相同的blog_show键来引用url,而且我不必更改我使用url的所有文件.

Ada*_*dam 8

您可以使用其中一个Symfony框架控制器执行此操作,但我不确定这将如何与参数一起使用:

blog_show:
    path: /blog/{slug}
    defaults:
        _controller: FrameworkBundle:Redirect:urlRedirect
        path: "http://example.com/blog"
        permanent: true
Run Code Online (Sandbox Code Playgroud)

请注意,path: /blog/{slug}直接抓住slu ,,但path: "http://example.com/blog/{slug}"不起作用.

资料来源:http://symfony.com/doc/current/cookbook/routing/redirect_in_config.html


Web*_*rig -2

Symfony 的路由器功能不是这样工作的......

我建议你为此创建一个 Twig 扩展。在这里阅读更多相关信息: http://symfony.com/doc/current/cookbook/templated/twig_extension.html

您可以创建一个与常规 url() 函数非常相似的函数,这样您就可以尽可能轻松地进行迁移。

{{ legacyUrl('blog_post', {slug: 'my-blog-post'}) }}
Run Code Online (Sandbox Code Playgroud)

将博客迁移到 Symfony 后,您所需要做的就是创建一个名为“blog_post”的路由并将“legacyUrl”更改为“url”。