Assetic Bundles 缓存 Composer 配置 控制台 控制器 调试 部署 Doctrine 电子邮件 事件分发器 表达式 表单 前端 日志 分析器 请求 路由 安全 序列化 服务容器 会话 PSR 7 Symfony 版本 模板 测试 升级 验证 Web 服务器 Web 服务 工作流

发布于 2015-12-06 07:24:15 | 208 次阅读 | 评论: 0 | 来源: 网络整理

有时您想要一个对您所用的所有模板都可用的变量。这在您的 app/config/config.yml 文件夹里是可行的。

YAML:

# app/config/config.yml
twig:
    # ...
    globals:
        ga_tracking: UA-xxxxx-x

XML:

<!-- app/config/config.xml -->
<twig:config>
    <!-- ... -->
    <twig:global key="ga_tracking">UA-xxxxx-x</twig:global>
</twig:config> 

PHP:

// app/config/config.php
$container->loadFromExtension('twig', array(
     // ...
     'globals' => array(
         'ga_tracking' => 'UA-xxxxx-x',
     ),
));

现在,变量 ga_tracking 在所有的 Twig 模板里都是可用的了。

<p>The google tracking code is: {{ ga_tracking }}</p>

就是这么简单!

使用服务容器参数

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

# app/config/parameters.yml
parameters:
    ga_tracking: UA-xxxxx-x

YAML:

# app/config/config.yml
twig:
    globals:
        ga_tracking: "%ga_tracking%"

XML:

<!-- app/config/config.xml -->
<twig:config>
    <twig:global key="ga_tracking">%ga_tracking%</twig:global>
</twig:config>

PHP:

// app/config/config.php
$container->loadFromExtension('twig', array(
     'globals' => array(
         'ga_tracking' => '%ga_tracking%',
     ),
));

同一个变量还是像以前那样能用。

引用服务

除了使用静态值,您还可以将该值设置为服务。当在模板中访问全局变量时,将从服务容器中请求服务,并访问该对象。

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

要将服务定义为全局 Twig 变量,以 @ 为前缀的字符串。这应该是熟悉的,因为它是在服务配置中使用相同语法。

YAML:

# app/config/config.yml
twig:
    # ...
    globals:
        user_management: "@acme_user.user_management"

XML:

<!-- app/config/config.xml -->
<twig:config>
    <!-- ... -->
    <twig:global key="user_management">@acme_user.user_management</twig:global>
</twig:config>

PHP:

// app/config/config.php
$container->loadFromExtension('twig', array(
     // ...
     'globals' => array(
         'user_management' => '@acme_user.user_management',
     ),
))

使用 Twig 扩充

如果全局变量要设置更为复杂的话 - 比如说一个对象 - 那么您就不能用上面的方法了。替代上面的方法,您需要创建一个 Twig 扩充并且在 getglobals 方法返回一个全局变量条目。

最新网友评论  共有(0)条评论 发布评论 返回顶部

Copyright © 2007-2017 PHPERZ.COM All Rights Reserved   冀ICP备14009818号  版权声明  广告服务