2013-05-25 18 views
1

这是我的一些代码部分:逻辑名称 - 电流控制器的名字

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

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

回答

1

是的,有@Template注释SensioFrameworkExtraBundle提供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控制器/动作:模板:模板控制器。详细了解它here

acme_privacy: 
    path: /privacy 
    defaults: 
     _controller: FrameworkBundle:Template:template 
     template: 'AcmeBundle:Static:privacy.html.twig'