2012-10-31 55 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

这正是问题所在。我在页面上更新了这个页面,该页面列出了单个文章的链接,但没有注意到文章页面本身有一个指向自己的规范标签。 –