这怎么可能?这似乎是一个非常奇怪的问题(除非我遗漏了一些非常简单的事情):
代码:
{{ dump(nav) }}
{% if nav == "top" %}
<div class="well">This would be the nav</div>
{% endif %}
输出:
boolean true
<div class="well">This would be the nav</div>
基本上,它输出如果为true,但它并不意味着要检查是否为真。
答案 0 :(得分:36)
这很容易重现:
{% set nav = true %}
{% if nav == "top" %}
ok
{% endif %}
显示ok
。
Twig允许在任何地方使用表达式。这些与常规工作非常相似 PHP,即使你不使用PHP,你也应该感觉到 很舒服。
如果你在纯PHP中测试以下表达式:
$var = true;
if ($var == "top") {
echo 'ok';
}
它也会显示确定。
关键是:你不应该比较不同类型的变量。在这里,您将bool与字符串进行比较:如果您的字符串不为空或者它不包含零,则它将评估为true。
您还可以查看PHP manual,了解如何与不同类型进行比较。
您可以使用sameas测试进行严格的比较,避免类型杂耍事宜。