2012-10-31 54 views
1

我已經使用註釋設置了路線。 Symfony2認爲這是錯的。這裏的路線:這個Symfony2路由有什麼問題?

@Route("/news/{id}/{slug}", name="newsarticle") 

下面的示例網址,我想匹配的路由:

http://somesite.com/news/202/my-news-title

下面是函數骨架:

public function newsArticleAction($id, $slug) 
{ 

} 

什麼時我錯過了嗎?我得到一個500錯誤和日誌說:

[二〇一二年十月三十○日二十時36分35秒] request.INFO:匹配的路由 「newsarticle」(參數: 「_controller」:「應用程序\ SiteBundle \控制器\ DefaultController :: newsArticleAction「,」id「:」202「,」slug「:」my-news-title「,」_route「:」newsarticle「)[] [] [2012-10-30 20:36: 36] app.INFO:從監聽器:「newsarticle」路由有一些缺少必需參數(「id」)。 [] [] [2012-10-30 20:36:36] request.CRITICAL:Symfony \ Component \ Routing \ Exception \ MissingMandatoryParametersException:「newsarticle」路由有一些缺少必需參數(「id」)。 (未捕獲的異常)在/home/user/app/cache/prod/classes.php線676 [] []

+1

似乎沒有是什麼毛病路線。從日誌看來,它看起來像匹配的路線罰款。你的模板可能試圖爲'newsarticle'生成URL,並且沒有生成所需的所有參數,它會拋出這個確切的異常。 – Alex

+0

您是否清除緩存?試試app_dev.php,它可以打印出錯信息的更多信息。 – Sgoettschkes

回答

10

此錯誤出現一個URL匹配到路由時,但產生一個時來自路線的網址。

在您的項目中搜索path('newsarticle'generateUrl('newsarticle'。你應該找到一個嘗試生成一個URL,而不傳遞所有需要的參數 - 是這樣的:

{{ path('newsarticle', {'slug': news.slug} }} 

,同時它的樣子:

{{ path('newsarticle', {'id': news.id, 'slug': news.slug} }} 
+0

這正是問題所在。我在頁面上更新了這個頁面,該頁面列出了單個文章的鏈接,但沒有注意到文章頁面本身有一個指向自己的規範標籤。 –