【问题标题】:What's wrong with this Symfony2 route?这条 Symfony2 路线有什么问题?
【发布时间】:2012-10-20 11:22:57
【问题描述】:

我已经使用注释设置了一条路线。在我看来是正确的,Symfony2 说这是错误的。路线如下:

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

这是一个我认为与路由匹配的示例 URL:

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

这里是函数骨架:

public function newsArticleAction($id, $slug)
{

}

我在这里缺少什么?我收到 500 错误,日志显示:

[2012-10-30 20:36:35] request.INFO:匹配路由“newsarticle”(参数:“_controller”:“App\SiteBundle\Controller\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 行 [] []

【问题讨论】:

  • 路线似乎没有任何问题。从日志看来,它与路线匹配得很好。您的模板可能正在尝试为 newsarticle 生成 URL,并且没有生成它所需的所有参数,它会抛出这个确切的异常。
  • 你清除缓存了吗?试试 app_dev.php,它可能会打印出更多关于出了什么问题的信息。

标签: symfony routing


【解决方案1】:

在将 URL 匹配到路由时会出现此错误不是,而是在从路由生成 URL 时出现。

在您的项目中搜索path('newsarticle'generateUrl('newsarticle'。您应该尝试在不传递所有必需参数的情况下生成 URL — 类似于:

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

虽然它必须看起来像:

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

【讨论】:

  • 这正是问题所在。我已经在列出单个文章链接的页面上更新了这一点,但没有注意到文章页面本身有一个指向自身的规范标签。
猜你喜欢
  • 1970-01-01
  • 2011-04-15
  • 1970-01-01
  • 2020-02-14
  • 2014-10-07
  • 2014-11-26
  • 2016-05-08
  • 2011-01-25
  • 1970-01-01
相关资源
最近更新 更多