【发布时间】:2015-01-08 15:03:24
【问题描述】:
大家好,我对 Symfony2 中的根注释有点问题。
我有两个不同的控制器,它们从相同的 URL 位置 /test 调用方法。
控制器 1:
**
* @Route("/test", service="myProject.test.controller.art")
* @Cache(expires="+5 minutes", public=true)
*/
class BlogController
{
/**
* @Route("/{text}", defaults={"text" = null})
* @Route("/topic/{tag}", defaults={"tag" = null})
* @Method({"GET"})
*/
public function listAction(ArtQuery $query)
{
//.................
}
}
控制器 2:
**
* @Route("/test" , service="myProject.test.controller.sitemap"))
* @Cache(expires="+5 minutes", public=true)
*/
class SitemapController
{
/**
* @Route("/sitemap.xml/")
* @Method({"GET"})
*/
public function sitemapAction()
{
//..................
}
}
问题是第二个控制器只有在添加到我的@route("/sitemap.xml/") 时才匹配,但我真的希望路由只有@route("/sitemap.xml")。
我认为问题是当我输入 url /test/sitemap.xml Symfony 在第一个控制器中将 sitemap.xml 视为 /{text} 变量路由。
我是否可以创建一个例外,以便第一个控制器在到达 sitemap.xml 时立即结束......?
我读过一些关于需求的东西,但不太理解这个概念
【问题讨论】: