Twig 关键字“services”的值始终为“true”

Twig keyword `services` always has the value `true`

我在 Symfony 工作,并试图将一个名为 $services 的变量传递到我的 twig 模板中。自然地,我也会引用同名的twig中的变量。

$services = new ArrayCollection();    // Some array

$this->render('template.html.twig', [
    'services' => $services
]);

然而,出于某种原因,services 始终是 true 的布尔值。这不是我要传递给它的 ArrayCollection


我已经检查了我的 twig 配置,看是否有任何可以将自身分配为全局变量的东西,但一切都检查过了,而且我似乎找不到任何关于 services 是保留关键字的文档。

FWIW,我将 twig 变量名称从 services 重命名为 foo 以进行完整性检查,并且 $services 变量的行为符合预期,因此它肯定与分配twig 中单词 services 的变量。

我目前是 运行 Twig 2.14.3

除了检查是否设置了任何全局变量之外,是否还有其他途径可以尝试找到定义此变量的原因和位置?

经过几个小时的故障排除,这似乎是一个非常愚蠢的答案。

我检查过:

  • 我的 twig.yaml 配置中的全局变量
  • 确保任何自定义 twig 扩展未绑定到 service
  • 已检查任何绑定服务是否未创建名称为 service
  • 的任何函数
  • 确保我没有在我的任何模板中设置 service 到我的基本模板

似乎什么都没有,然后我开始转向一些注册了一些 twig 模板的第三方包。

结果发现一个包有一个模板,里面写着 {% set services = ... %},它包含在我的基本模板中。


+1 @yivi 引起了我的注意 debug:twig,因为知道什么与 twig 绑定非常有用。正是这些信息让我知道了捆绑包绑定到的任何命名空间,并提供了一些额外的地方来开始寻找。