2016-08-09 74 views
0

在我的Symfony2应用程序,我想具体路线为我的网页,与我的SEO很好地工作,但我收到了一些严重的问题,我不明白他们..Symfony2的路由重定向到错误的控制器

例:

两条路线:

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路线并打开所需的控制器?或者它不能像那样工作?

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

回答

0

不,这是行不通的那样,即你的榜样路径代码并不意味着路由应该寻找blog_article路线:

树枝路径功能只是扩大了航线进入实际的URL(/blog/yourslug),并且当实际访问该url时,系统会从url到路由(与上面列出的两个路由定义中的第一个相匹配)进行匹配。

如果你有这样的路线,解决办法是让它们整齐地按照正确的顺序排列(大多数通用的 - 本例中的产品 - 总是最后一个),或者如果订购不可行,你可以试着通过放置一些具体的路线要求来解决这个问题。

0

改变路由

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

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

,并会被罚款。

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

它也可以工作,如果你改变顺序(产品将是第一个)。但它不是很好的解决方案(如果有人添加类别博客呢?)