1

这是我的代码的一部分:

class FooController extends Controller {
   public function defaultAction() {
      return $this->render('myBarBundle:Foo:someview.html.twig');
   }
}

所以每次我使用渲染功能时,我都需要使用当前包和控制器的名称。我只是好奇,有没有什么东西可以缩短这种语法和负载电流包/控制器的种类?所以我只需要输入一个视图文件名?

4

1 回答 1

1

是的,有 SensioFrameworkExtraBundle 提供的@Template注释,随 symfony2 标准版一起提供。

// YourBundle/Controller/YourController.php

/**
 * @Template
 */
public function defaultAction(Post $post)
{
}

// this will automatically render 'YourBundle:YourController:default.html.twig

在这种情况下,如果方法返回 null 并且没有定义 vars 属性,则所有方法参数都会自动传递给模板!

...或者,如果您想指定特定的模板,请使用:

/**
 * @Template ("SensioBlogBundle:Post:show")
 */

...您不妨看看 @ParamConverter 注释。

注意力

如果您只想提供静态模板(例如在您的示例中)而无需编写控制器/操作,您可以使用提供的 FrameworkBundle:Template:template 控制器。在此处阅读更多相关信息。

acme_privacy:
    path: /privacy
    defaults:
        _controller: FrameworkBundle:Template:template
        template: 'AcmeBundle:Static:privacy.html.twig'
于 2013-05-25T15:10:57.153 回答