@@ -57,8 +57,8 @@ template you've passed as the ``template`` default value.
57
57
You can of course also use this trick when rendering embedded controllers
58
58
from within a template. But since the purpose of rendering a controller from
59
59
within a template is typically to prepare some data in a custom controller,
60
- this probably isn't useful, except to easily cache static partials, a feature
61
- which will become available in Symfony 2.2 .
60
+ this is probably only useful if you'd like to cache this page partial (see
61
+ :ref: ` cookbook-templating-no-controller-caching `) .
62
62
63
63
.. configuration-block ::
64
64
@@ -71,3 +71,67 @@ which will become available in Symfony 2.2.
71
71
<?php echo $view['actions']->render(
72
72
$view['router']->generate('acme_privacy', array(), true)
73
73
) ?>
74
+
75
+ .. _cookbook-templating-no-controller-caching :
76
+
77
+ Caching the static Template
78
+ ---------------------------
79
+
80
+ .. versionadded :: 2.2
81
+ The ability to cache templates rendered via ``FrameworkBundle:Template:template ``
82
+ is new in Symfony 2.2.
83
+
84
+ Since templates that are rendered in this way are typically static, it might
85
+ make sense to cache them. Fortunately, this is easy! By configuring a few
86
+ other variables in your route, you can control exactly how your page is cached:
87
+
88
+ .. configuration-block ::
89
+
90
+ .. code-block :: yaml
91
+
92
+ acme_privacy :
93
+ pattern : /privacy
94
+ defaults :
95
+ _controller : FrameworkBundle:Template:template
96
+ template : ' AcmeBundle:Static:privacy.html.twig'
97
+ maxAge : 86400
98
+ sharedMaxAge : 86400
99
+
100
+ .. code-block :: xml
101
+
102
+ <?xml version =" 1.0" encoding =" UTF-8" ?>
103
+
104
+ <routes xmlns =" http://symfony.com/schema/routing"
105
+ xmlns : xsi =" http://www.w3.org/2001/XMLSchema-instance"
106
+ xsi : schemaLocation =" http://symfony.com/schema/routing http://symfony.com/schema/routing/routing-1.0.xsd" >
107
+
108
+ <route id =" acme_privacy" pattern =" /privacy" >
109
+ <default key =" _controller" >FrameworkBundle:Template:template</default >
110
+ <default key =" template" >AcmeBundle:Static:privacy.html.twig</default >
111
+ <default key =" maxAge" >86400</default >
112
+ <default key =" sharedMaxAge" >86400</default >
113
+ </route >
114
+ </routes >
115
+
116
+ .. code-block :: php
117
+
118
+ use Symfony\Component\Routing\RouteCollection;
119
+ use Symfony\Component\Routing\Route;
120
+
121
+ $collection = new RouteCollection();
122
+ $collection->add('acme_privacy', new Route('/privacy', array(
123
+ '_controller' => 'FrameworkBundle:Template:template',
124
+ 'template' => 'AcmeBundle:Static:privacy.html.twig',
125
+ 'maxAge' => 86400,
126
+ 'sharedMaxAge' => 86400,
127
+ )));
128
+
129
+ return $collection;
130
+
131
+ The ``maxAge `` and ``sharedMaxAge `` values are used to modify the Response
132
+ object created in the controller. For more information on caching, see
133
+ :doc: `/book/http_cache `.
134
+
135
+ There is also a ``private `` variable (not shown here). By default, the Response
136
+ will be made public, as long as ``maxAge `` or ``sharedMaxAge `` are passed.
137
+ If set to ``true ``, the Response will be marked as private.
0 commit comments