【问题标题】:Symfony 2: route defined in annotation not visible from by Twig's path()Symfony 2:注释中定义的路由从 Twig 的路径()中不可见
【发布时间】:2011-12-06 20:05:35
【问题描述】:

我遇到了一个问题,有以下问题:

带有简单动作的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:
  pattern:  /register
  defaults: { _controller: EBTSCustomerBundle:Controller:Default:index }

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

各位有什么想法吗?

【问题讨论】:

    标签: php routing annotations symfony twig


    【解决方案1】:

    注解的路由仍然需要像这样导入到 routing.yml 中:

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

    这将告诉路由扫描Acme\HelloBundleController目录并导入所有路由。

    您可以通过注释here找到有关路由的更多信息。该链接还将告诉您如何激活我上面显示的路线。

    另外,我注意到您的路由注释需要name 参数才能通过register 使用path 函数访问,否则它将通过acme_bundlename_controllername_actionname 访问:

    @Route("/register", name="register")
    

    希望有帮助!

    【讨论】:

    • 抱歉,我在之前的笔记中错过了那个导入,我的包中的路由就像你写的一样被导入(资源:@AcmeHelloBundle...),但是我的中缺少的 name="register" 部分注释导致了问题。感谢您的意见,它真的很有帮助!
    • 遇到了同样的问题...原来我在注释中的“名字”设置不正确。谢谢。
    猜你喜欢
    • 1970-01-01
    • 2012-01-12
    • 1970-01-01
    • 2014-08-25
    • 1970-01-01
    • 2013-07-19
    • 1970-01-01
    • 1970-01-01
    • 2022-08-14
    相关资源
    最近更新 更多