(模板)如何在所有模板中注入变量(如:全局变量)

有时你想你自己的一个变量能在symfony的所有模板中使用。比较合适的方式是在app/config/config.yml文件中设置。

现在,这个ga_tracking变量就可以在所有twig模板中使用了:

是不是很简单!

 

使用服务容器参数

你可以利用内置的服务参数系统,它可以让您分离或重用该值:

 

同一个变量还是和以前一样使用。

 

引用服务

除了使用静态变量,你还可以设置一个服务。每当全局变量在模板中访问时,该服务也就随之请求服务容器,你就能够获取这个对象。

服务不会延迟加载。换句话说,当 Twig 被加载时,即使您从来没有使用全局变量,您的服务也会被实例化。

要将服务定义为全局 Twig 变量,要在字符串前加“ @ ”为前缀。这应该很熟悉了,因为他和你服务配置时一样都使用同样的语法。

 

使用一个Twig扩展

如果你想把全局变量变得更为复杂 – 比如说一个对象 – 那么你就不能使用上面的方法了。你需要去创建一个Twig Extension(Twig扩展)并在 getglobals 方法中返回一个全局变量。

发表评论