2016-08-09 56 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}可能是「博客」,所以第一條路線是匹配的。

它也可以工作,如果你改變順序(產品將是第一個)。但它不是很好的解決方案(如果有人添加類別博客呢?)