symfony2路由注释不起作用

时间:2011-09-19 07:00:48

标签: php symfony

我刚下载了symfony2,并开始通过注释播放路由。我在我创建的包中设置了app / config / routing.yml以使用注释,并删除了Acme包及其所有路由引用。也就是说,我尝试在我的控制器中创建几个不同的路由注释,如 @Route(“/”) @Route(“/ hello / {name}”)但我总是遇到404错误(使用开发环境)。如果我在routing.yml中添加路由,即使路由配置为使用注释,它也可以正常工作。无论出于何种原因,我的注释似乎都被忽略了。

这是我的app / config / routing.yml:

DanDefaultBundle:
  resource: "@DanDefaultBundle/Controller/"
  type:     annotation
  prefix:   /

这是我的控制器方法:

/**
 * @Route("/")
 * @Template()
 */
public function indexAction()
{
    return array('name' => 123);
}

我已经包含了Sensio \ Bundle \ FrameworkExtraBundle \ Configuration \ Route命名空间 - 据我所知,我在文档中看到的一切都是正确的。我忽略了什么导致symfony2似乎忽略了我的路由注释?同样,如果我将路由添加到路由yaml,一切正常,所以我的捆绑工作正常 - 但注释似乎被忽略。

谢谢!

更新 看起来除了routing.yml之外我还必须将路由添加到routing_dev.yml,因为我在开发环境中运行。我想那是你在开发和生产之间有不同的路线?我想要特别注意确保这些路线保持同步?

2 个答案:

答案 0 :(得分:4)

您意外删除了routing.ymlrouting_dev.yml的加入。

答案 1 :(得分:1)

如果您在routing.yml中使用Route Prefix

你必须在类声明之上声明你的前缀:

/**
 * @Route("/")
 */
class PostController extends Controller
{
    /**
     * @Route("/")
     * @Template()
     */
    public function indexAction()
    {
    }

    /**
     * @Route("{id}")
     * @Template()
     */
    public function showAction($id)
    {
    }
} 

喜欢 Sensio FrameworkExtra Bundle Documentation

相关问题