Symfony 2:注释中定义的路径从Twig的路径中看不到()

时间:2011-12-06 20:05:35

标签: php routing annotations symfony twig

我遇到了问题,请注意以下事项:

使用简单操作的DefaultController:

/**
 * @Route("/register")
 * @Template
 */
public function indexAction() {
    $oForm = $this->createForm(new RegisterType());
    return array(
        'form'  => $oForm->createView()
    );
}

在我的树枝模板中,我尝试使用:

<form action="{{ path('register') }}" method="post"></form>

但是我收到以下错误:

An exception has been thrown during the rendering of a template ("Route "register" does not exist.") in EBTSCustomerBundle:Default:index.html.twig at line 2.

当我在app / config / routing.yml中明确定义“register”路由时:

register:
  pattern:  /register
  defaults: { _controller: EBTSCustomerBundle:Controller:Default:index }

然后它工作正常。找不到任何合理的文档,我认为通过注释定义的路径应该在整个应用程序中可见。

任何想法的人?

1 个答案:

答案 0 :(得分:33)

注释路由仍然需要导入到routing.yml中,如下所示:

AcmeHelloBundle:
  resource: "@AcmeHelloBundle/Controller"
  type: annotation

这将告诉路由扫描Controller的{​​{1}}目录并导入所有路由。

您可以通过注释 here 找到有关路由的详细信息。该链接还将告诉您如何激活路线,如上所示。

另外,我注意到您的路线注释需要使用Acme\HelloBundle函数通过name访问register参数,否则可以通过path访问:< / p>

acme_bundlename_controllername_actionname

希望有所帮助!