这怎么可能?这似乎是一个非常非常奇怪的问题(除非我遗漏了一些非常简单的东西):
代码:
{{ 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>
基本上,如果为真,它会输出,但它并不意味着检查是否为真。
这很容易重现:
{% set nav = true %}
{% if nav == "top" %}
ok
{% endif %}
显示ok
。
根据文档:
Twig 允许在任何地方表达。这些工作与普通 PHP非常相似,即使您不使用 PHP,您也应该对它感到满意。
如果您在纯 PHP 中测试以下表达式:
$var = true;
if ($var == "top") {
echo 'ok';
}
也会显示ok。
关键是:你不应该比较不同类型的变量。在这里,您将 bool 与 string 进行比较:如果您的字符串不为空或不包含仅零,它将评估为 true。
您还可以查看PHP 手册,了解如何与不同类型进行比较。
您可以使用sameas测试进行严格的比较,并避免类型杂耍。
如果有人需要否定字符串比较语句的结果,请使用下一个构造:
{% set is_training = course_type == 'training' %}
...
{% if not is_training %}
...