我刚下载了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,因为我在开发环境中运行。我想那是你在开发和生产之间有不同的路线?我想要特别注意确保这些路线保持同步?
答案 0 :(得分:4)
您意外删除了routing.yml
中routing_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)
{
}
}