使用Twig(v1.23.3)时发现这种奇怪的行为
在一个模板中我有一个对象数组:我使用dump函数来显示它,如下所示:
SERLIBPATH=../../lib
SER_LIBS+=$(SERLIBPATH)/srdb1/srdb1
转储输出符合预期:
<pre align="left" style="text-align: left; font-size: 80%">
{{ dump(current_balances) }}
</pre>
{% for key, val in current_balances %}
{{ val.name }} : {{ val.balance | number_format(2, '.', ' ') }} €<br>
{% else %}
Aucun solde trouvé.
{% endfor %}
但是for循环的输出不正确。显示{{val.name}},但{{val.balance}}为空。
我把这种循环丢弃了数百次 - 这段代码只是从一个有效的模板中剪切并粘贴。
事件更奇怪的是,如果我反转对象中的变量的顺序(因为它很重要),在名称之前放置余额,然后显示余额,而不是名称!
我真的不知道在哪里看这个。当然,我的模板是用控制器调用模型来呈现的,所以这只是代码的一小部分。
我认为我发现了一个类似Variables not replaced in Twig template的错误,但很难说。
答案 0 :(得分:0)
这不是一个错误!我终于在Twig中启用了缓存并查看了生成的代码。你猜怎么着 ?一些不可打印的char已经找到了靠近val.balance的方法。 A&#34; cat -A&#34;在模板文件上显示:
{{ val.name }} : {{M-BM- val.balance }} M-bM-^BM-,<br>$
在编译模板中生成此内容:
$this->getAttribute((isset($context[" val"]) ? $context[" val"] : null)
注意到val之前的空间?
用这个丢了一个小时。源问题是Debian中过时的frenck键映射....