Symfony2路由重定向到错误的控制器

时间:2016-08-09 10:18:09

标签: php symfony routing

在我的symfony2应用程序中,我想要我的页面的特定路由,与我的seo一起工作,但我收到一些严重的问题,我不理解它们。

实施例

两条路线:

blog_article:
    path: /blog/{slug}
    defaults: {_controller: ApplicationEDBlogBundle:Blog:singleArticle}

product:
    path: /{category}/{name}
    defaults: { _controller: MpShopBundle:Product:view}

product路由正常,但blog_article路由始终重定向到product路由..

根据我的理解,如果我打开博客:/blog/firstBlog/默认情况下它认为博客是一个类别,firstBlog是产品名称,因为我的product路线是最后一条路线。

但是,如果在我的树枝上,我具体说明要去哪条路线,它不应该起作用吗?

例如:{{ path('blog_article', {slug: blog.slug}) }}。不应该查看blog_article路由并打开所需的控制器吗?或者它不起作用?

如果是这样,如何以我想要的方式保留我的漂亮网址?

2 个答案:

答案 0 :(得分:0)

不,它不会那样工作,即您的示例路径代码并不意味着路由应该查找blog_article路由:

树枝路径功能只是将路径扩展到实际网址(/ blog / yourslug),当实际访问该网址时,系统会从网址到路径进行相反的匹配(匹配到任何一个网址)上面列出的第一个两个路线定义。)

如果您有这种路线,解决方案是将它们整齐地按正确的顺序排列(大多数通用的 - 在这种情况下的产品 - 始终是最后一个),或者如果无法订购,您可以尝试如果适用,可以通过放置一些特定的路线要求来解决这个问题。

答案 1 :(得分:0)

将路线更改为

blog_article:
    path: /blog/{slug}
    defaults: {_controller: ApplicationEDBlogBundle:Blog:singleArticle}

product:
    path: /cat/{category}/{name}
    defaults: { _controller: MpShopBundle:Product:view}

并且没问题。

在您的示例中,{category}可能是"博客" ,所以第一条路线匹配。

如果您更改订单(产品将是第一个),它也可以工作。但它不是一个好的解决方案(如果有人添加类别博客怎么办?)