<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Symfony中文教程 &#187; 模板</title>
	<atom:link href="http://www.newlifeclan.com/symfony/archives/category/cookbook/cookbook-2-6/templating/feed" rel="self" type="application/rss+xml" />
	<link>http://www.newlifeclan.com/symfony</link>
	<description>站在巨人肩膀上的phpweb框架</description>
	<lastBuildDate>Fri, 12 Dec 2025 00:58:27 +0000</lastBuildDate>
	<language>zh-CN</language>
		<sy:updatePeriod>hourly</sy:updatePeriod>
		<sy:updateFrequency>1</sy:updateFrequency>
	<generator>https://wordpress.org/?v=4.0.38</generator>
	<item>
		<title>(模板)如何在所有模板中注入变量(如：全局变量)</title>
		<link>http://www.newlifeclan.com/symfony/archives/618</link>
		<comments>http://www.newlifeclan.com/symfony/archives/618#comments</comments>
		<pubDate>Fri, 23 Oct 2015 04:03:41 +0000</pubDate>
		<dc:creator><![CDATA[napoleon]]></dc:creator>
				<category><![CDATA[模板]]></category>

		<guid isPermaLink="false">http://www.newlifeclan.com/symfony/?p=618</guid>
		<description><![CDATA[<p>有时你想你自己的一个变量能在symfony的所有模板中使用。比较合适的方式是在app/config/confi [&#8230;]</p>
<p><a rel="nofollow" href="http://www.newlifeclan.com/symfony/archives/618">(模板)如何在所有模板中注入变量(如：全局变量)</a>，首发于<a rel="nofollow" href="http://www.newlifeclan.com/symfony">Symfony中文教程</a>。</p>
]]></description>
				<content:encoded><![CDATA[<p>有时你想你自己的一个变量能在symfony的所有模板中使用。比较合适的方式是在app/config/config.yml文件中设置。<span id="more-618"></span></p><pre class="crayon-plain-tag"># app/config/config.yml
twig:
    # ...
    globals:
        ga_tracking: UA-xxxxx-x</pre><p>现在，这个<tt class="docutils literal"><code>ga_tracking</code></tt>变量就可以在所有twig模板中使用了：</p><pre class="crayon-plain-tag">&lt;p&gt;The google tracking code is: {{ ga_tracking }}&lt;/p&gt;</pre><p>是不是很简单！</p>
<p>&nbsp;</p>
<h2>使用服务容器参数</h2>
<p>你可以利用内置的服务参数系统，它可以让您分离或重用该值：</p><pre class="crayon-plain-tag"># app/config/parameters.yml
parameters:
    ga_tracking: UA-xxxxx-x</pre><p>&nbsp;</p><pre class="crayon-plain-tag"># app/config/config.yml
twig:
    globals:
        ga_tracking: "%ga_tracking%"</pre><p>同一个变量还是和以前一样使用。</p>
<p>&nbsp;</p>
<h2><strong>引用服务</strong></h2>
<p>除了使用静态变量，你还可以设置一个服务。每当全局变量在模板中访问时，该服务也就随之请求服务容器，你就能够获取这个对象。</p>
<blockquote><p>服务不会延迟加载。换句话说，当 Twig 被加载时，即使您从来没有使用全局变量，您的服务也会被实例化。</p></blockquote>
<p>要将服务定义为全局 Twig 变量，要在字符串前加“ <strong>@</strong> ”为前缀。这应该很熟悉了，因为他和你服务配置时一样都使用同样的语法。</p><pre class="crayon-plain-tag"># app/config/config.yml
twig:
    # ...
    globals:
        user_management: "@app.user_management"</pre><p>&nbsp;</p>
<h2>使用一个Twig扩展</h2>
<p>如果你想把全局变量变得更为复杂 &#8211; 比如说一个对象 &#8211; 那么你就不能使用上面的方法了。你需要去创建一个Twig Extension（Twig扩展）并在 <strong>getglobals</strong> 方法中返回一个全局变量。</p>
<p><a rel="nofollow" href="http://www.newlifeclan.com/symfony/archives/618">(模板)如何在所有模板中注入变量(如：全局变量)</a>，首发于<a rel="nofollow" href="http://www.newlifeclan.com/symfony">Symfony中文教程</a>。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.newlifeclan.com/symfony/archives/618/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>(模板)没有自定义控制器如何渲染一个模板</title>
		<link>http://www.newlifeclan.com/symfony/archives/54</link>
		<comments>http://www.newlifeclan.com/symfony/archives/54#comments</comments>
		<pubDate>Wed, 08 Oct 2014 06:51:15 +0000</pubDate>
		<dc:creator><![CDATA[napoleon]]></dc:creator>
				<category><![CDATA[Cook 2.6]]></category>
		<category><![CDATA[Cookbook]]></category>
		<category><![CDATA[模板]]></category>

		<guid isPermaLink="false">http://www.newlifeclan.com/symfony/?p=54</guid>
		<description><![CDATA[<p>通常，当你需要去创建一个页面，你需要去创建一个控制器和控制器需要渲染的一个模板文件。但是如果你只需要一个简单的 [&#8230;]</p>
<p><a rel="nofollow" href="http://www.newlifeclan.com/symfony/archives/54">(模板)没有自定义控制器如何渲染一个模板</a>，首发于<a rel="nofollow" href="http://www.newlifeclan.com/symfony">Symfony中文教程</a>。</p>
]]></description>
				<content:encoded><![CDATA[<p>通常，当你需要去创建一个页面，你需要去创建一个控制器和控制器需要渲染的一个模板文件。但是如果你只需要一个简单的模板不需要数据传递给他，你可以不用创建一个控制器，而是使用内部的FrameworkBundle:Template:template控制器就可以了。<br />
<span id="more-54"></span><br />
例如，假如你想把AcmeBundle:Static:privacy.html.twig模板输出，不用传递任何变量。你就不用创建控制器了，你需要这么写：</p><pre class="crayon-plain-tag">acme_privacy:
    path: /privacy
    defaults:
        _controller: FrameworkBundle:Template:template
        template:    'AcmeBundle:Static:privacy.html.twig'</pre><p>上面代码中FrameworkBundle:Template:template 控制器，可以将任意template的模板渲染。</p>
<p>当然也可以使用这个技巧就是从模板内部嵌入控制器。但由于从模板中呈现一个控制器的目的通常是在控制器准备一些典型数据，我们还可以缓存这些嵌入页面的部分内容（查看 缓存静态模板）</p><pre class="crayon-plain-tag">{{ render(url('acme_privacy')) }}</pre><p>&nbsp;</p>
<h2>缓存静态模板</h2>
<p>由于模板用这种方式呈现都是静态的，只有静态的才能够缓存。幸运的是，他非常的简单！在你的路由中通过配置一些其他的变量，你就能控制怎样正确的缓存你的页面：</p><pre class="crayon-plain-tag">acme_privacy:
    path: /privacy
    defaults:
        _controller:  FrameworkBundle:Template:template
        template:     'AcmeBundle:Static:privacy.html.twig'
        maxAge:       86400
        sharedAge:    86400</pre><p>这个maxAge和sharedAge用于修改在控制器中创建的Response对象。关于更多缓存细节请查看 <span style="color: #ff0000"> http Cache</span>。</p>
<p>还有一个private变量（他没有显示在这里）。默认情况下，只要有maxAge和sharedAge传递，这个Response将是共有的。如果设置为true，这个Response就是私有的。</p>
<p><a rel="nofollow" href="http://www.newlifeclan.com/symfony/archives/54">(模板)没有自定义控制器如何渲染一个模板</a>，首发于<a rel="nofollow" href="http://www.newlifeclan.com/symfony">Symfony中文教程</a>。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.newlifeclan.com/symfony/archives/54/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>
