Twig 如果一个是真的,另一个是假的,那就用树枝

Twig 如果一个是真的,另一个是假的,那就用树枝,twig,Twig,与此相关 当a==true和b==false时,你会怎么做?这一定是 在否决投票之前,信不信由你,但在这件事上没有任何发现 因此: 你应该说这应该行得通,但那不是: {% if (a == true) and (b == false) %} do stuff {% endif %} 更新2 这是因为一个是真的,两个是假的 {% if variant.stock.track == true %} {% if variant.stock.on_stock == false %} ({{ 'O

与此相关

当a==true和b==false时,你会怎么做?这一定是 在否决投票之前,信不信由你,但在这件事上没有任何发现

因此:

你应该说这应该行得通,但那不是:

{% if (a == true) and (b == false) %}
do stuff
{% endif %}
更新2 这是因为一个是真的,两个是假的

{% if variant.stock.track == true %} 
{% if variant.stock.on_stock == false %}
  ({{ 'Out of stock' | t }}){% else %} ({{ 'In stock' | t }})
{% endif %}
{% endif %}

通常,在验证是否为false时,我使用
sameas
。就你而言:

{% if a and b is sameas(false) %}
但是,如果是这样,您也可以使用速记:

{% if a and b == false %}
请注意,此检查取决于所设置的变量。如果未设置任何变量,则检查true或false将失败,因为该变量的值为
null

所以,如果你想检查真或假,并希望确保如果没有设置值,你会得到假;您可以使用
默认值

{% if a and b|default(false) is sameas(false) %}
或者,如果您更喜欢php样式:

{% if a and b|default(false) == false %}
这也应该起作用:

{% if variant.stock.track and variant.stock.on_stock|default(false) is sameas(false) %}
      ({{ 'Out of stock' | t }}){% else %} ({{ 'In stock' | t }})
{% endif %}


如果a和b==false
如果a和b相同(false)
第一个对我有效。@Luceos:a需要为true,b需要为false。所以不是两者都有。一个是真的,另一个是假的这正是我的评论所说的@JaapVermoolen,请注意“or”不是代码的一部分。(写第一条评论时手里拿着冰淇淋:P)@Luceos:Yummy;)但是你现在的测试如果两者都是错误的。A需要为真,b需要为假。如果是这样的话,那就做点什么……我现在完全糊涂了!如果你想测试a==true和b==false,那么这是行不通的,对吧?!你总是没有或两者都有假/真。。。看到我更新的问题“你总是没有或都有假/真…”我想你需要澄清你的问题,你没有意义。我的意思是你的代码总是有一个假和一个真。请参阅我的最新问题。如果a必须是真的,b必须是假的,那么做一些事情。使用您的代码可以有一个真/假和一个真/假。所以它可以双向运行。我在另一台机器上测试了它,这很有效。。。我接受你的回答。我不知道我这方面出了什么问题。享受你的冰淇淋;)在一个环境中,您的配置
strict\u variables
可能设置为false?
{% if variant.stock.track and variant.stock.on_stock|default(false) is sameas(false) %}
      ({{ 'Out of stock' | t }}){% else %} ({{ 'In stock' | t }})
{% endif %}
{% if variant.stock.track and variant.stock.on_stock|default(false) == false %}
  ({{ 'Out of stock' | t }}){% else %} ({{ 'In stock' | t }})
{% endif %}