Symfony路由注释要求不起作用

时间:2015-06-05 16:00:22

标签: symfony routing annotations

的routing.yml

thisismyroute:
    path:      thisroute/to/{id}
    defaults:  { _controller: MyBundle:Default:createRoutePage }
    requirements: 
        page:  \d+

控制器

/**
     * Template Select
     * @Route("/to/{id}",name="thisismyroute", requirements={"id": "\d+"})
     * @Method({"POST"})
     */

    public function createRoutePage($id){

        /*   code here */

    }

当我访问www.mysite.com/app_dev.php/thisroute/to/asdfasdf时,由于要求设置为整数,因此可以访问它。

在我的routing_dev.yml中,我有一行

  

_main:       resource:routing.yml

2 个答案:

答案 0 :(得分:0)

对于注释设置,它应该是:

/**
 * Template Select
 * @Route("/to/{id}", name="thisismyroute", requirements={"id"="\d+"})
 * @Method({"POST"})
 */

public function createRoutePage($id)
{
    /* code here */
}

<强>更新

对于yml配置,请尝试

thisismyroute:
    path:      thisroute/to/{id}
    defaults:  { _controller: MyBundle:Default:createRoutePage }
    requirements: 
        id:  \d+

答案 1 :(得分:0)

通常在控制器中使用@Route注释时,可以更轻松地配置routing.yml,以便一劳永逸地导入在Controller目录中注释的所有路由,如下所示:

# import routes from a controller directory
route_group_name:
    resource: "@YourBundle/Controller"
    type:     annotation

那就是它。这样您就不需要在routing.yml中指定每个路由。

然后您只能在控制器中使用注释:

/**
 * 
 * @Route("/to/{id}", name="thisismyroute", requirements={"id"="\d+"})
 * @Method({"POST"})
 */

 public function myRouteAction($id)
 {
     /* code here */
 }

PS:它也是Symfony推荐的最佳做法,可以使用注释来声明路线。