有时你想你自己的一个变量能在symfony的所有模板中使用。比较合适的方式是在app/config/config.yml文件中设置。
1 2 3 4 5 |
# app/config/config.yml twig: # ... globals: ga_tracking: UA-xxxxx-x |
现在,这个ga_tracking
变量就可以在所有twig模板中使用了:
1 |
<p>The google tracking code is: {{ ga_tracking }}</p> |
是不是很简单!
使用服务容器参数
你可以利用内置的服务参数系统,它可以让您分离或重用该值:
1 2 3 |
# app/config/parameters.yml parameters: ga_tracking: UA-xxxxx-x |
1 2 3 4 |
# app/config/config.yml twig: globals: ga_tracking: "%ga_tracking%" |
同一个变量还是和以前一样使用。
引用服务
除了使用静态变量,你还可以设置一个服务。每当全局变量在模板中访问时,该服务也就随之请求服务容器,你就能够获取这个对象。
服务不会延迟加载。换句话说,当 Twig 被加载时,即使您从来没有使用全局变量,您的服务也会被实例化。
要将服务定义为全局 Twig 变量,要在字符串前加“ @ ”为前缀。这应该很熟悉了,因为他和你服务配置时一样都使用同样的语法。
1 2 3 4 5 |
# app/config/config.yml twig: # ... globals: user_management: "@app.user_management" |
使用一个Twig扩展
如果你想把全局变量变得更为复杂 – 比如说一个对象 – 那么你就不能使用上面的方法了。你需要去创建一个Twig Extension(Twig扩展)并在 getglobals 方法中返回一个全局变量。