通常,当你需要去创建一个页面,你需要去创建一个控制器和控制器需要渲染的一个模板文件。但是如果你只需要一个简单的模板不需要数据传递给他,你可以不用创建一个控制器,而是使用内部的FrameworkBundle:Template:template控制器就可以了。
例如,假如你想把AcmeBundle:Static:privacy.html.twig模板输出,不用传递任何变量。你就不用创建控制器了,你需要这么写:
1 2 3 4 5 |
acme_privacy: path: /privacy defaults: _controller: FrameworkBundle:Template:template template: 'AcmeBundle:Static:privacy.html.twig' |
上面代码中FrameworkBundle:Template:template 控制器,可以将任意template的模板渲染。
当然也可以使用这个技巧就是从模板内部嵌入控制器。但由于从模板中呈现一个控制器的目的通常是在控制器准备一些典型数据,我们还可以缓存这些嵌入页面的部分内容(查看 缓存静态模板)
1 |
{{ render(url('acme_privacy')) }} |
缓存静态模板
由于模板用这种方式呈现都是静态的,只有静态的才能够缓存。幸运的是,他非常的简单!在你的路由中通过配置一些其他的变量,你就能控制怎样正确的缓存你的页面:
1 2 3 4 5 6 7 |
acme_privacy: path: /privacy defaults: _controller: FrameworkBundle:Template:template template: 'AcmeBundle:Static:privacy.html.twig' maxAge: 86400 sharedAge: 86400 |
这个maxAge和sharedAge用于修改在控制器中创建的Response对象。关于更多缓存细节请查看 http Cache。
还有一个private变量(他没有显示在这里)。默认情况下,只要有maxAge和sharedAge传递,这个Response将是共有的。如果设置为true,这个Response就是私有的。
One comment