这是我的代码的一部分:
class FooController extends Controller {
public function defaultAction() {
return $this->render('myBarBundle:Foo:someview.html.twig');
}
}
所以每次我使用渲染功能时,我都需要使用当前包和控制器的名称。我只是好奇,有没有什么东西可以缩短这种语法和负载电流包/控制器的种类?所以我只需要输入一个视图文件名?
这是我的代码的一部分:
class FooController extends Controller {
public function defaultAction() {
return $this->render('myBarBundle:Foo:someview.html.twig');
}
}
所以每次我使用渲染功能时,我都需要使用当前包和控制器的名称。我只是好奇,有没有什么东西可以缩短这种语法和负载电流包/控制器的种类?所以我只需要输入一个视图文件名?
是的,有 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'