我无法检查带有Twig的数组中是否存在值。
如果购物车中有特定产品,我想在结帐时隐藏送货方式。
我只能使用Twig
代码,所以我必须找到一个逻辑。
所以,假设产品ID 1234在购物车中,那么我想隐藏#certain_div
所以我拥有的是这个 - >
{% if checkout %}
{% set array = theme.sku_shipping_rule | split(',') %}
// theme.sku_shipping_rule = a text string like 1234, 4321, 5478
{% if checkout.products %}
{% for product in checkout.products %}
{% if product.sku in array %}
<style>
#certain_div {
display: none;
}
</style>
{% endif %}
{% endfor %}
{% endif %}
{% endif %}
我面临的问题是我的代码似乎总是返回true。因此,即使product.sku
与数组中的值不匹配,它仍然会隐藏#certain_div
。我已在{{ product.sku }}
之前放置<style>
进行了测试。
我错了什么?
任何帮助都非常感谢!
更新
我已更新问题/代码以显示正在发生的事情
{% if checkout %}
{% set skuToCheck = theme.sku_shipping_rule | split(',') %}
{% set skuInCart = [] %}
{% if checkout.quote.products %}
{% for product in checkout.quote.products %}
{% set skuInCart = skuInCart | merge([product.sku]) %}
{% endfor %}
{% endif %}
{% for myVar in skuInCart %}
{{ myVar }}<br/>
{% endfor %}
// this prints
PSYGA1 // where this sku should NOT match
FP32MA4
{% for myVar in skuToCheck %}
{{ myVar }}<br/>
// this prints
FP32LY4
FP32STR4
FP32MA4
{% if myVar in skuInCart %} // also tried with | keys filter
{{ myVar }} is found
{% endif %}
{% endfor %}
{% endif %}
所以我所做的就是将数据集放在数组skuInCart
中的购物车中的产品中。接下来,我想检查myVar
数组中是否存在skuInCart
。如果是,请打印myVar is found
。
您应该期望它只打印匹配的结果。但是,它实际打印的所有值skuInCart
(使用keys
过滤器)或完全空白而不使用keys
过滤器。
答案 0 :(得分:1)
What you are doing in theory should work, have a look a this fiddle example to show you a working demonstration:
Basically:
<div id="certain_div">
This should not show up
</div>
{% set searchForSku = "890" %}
{% set productSkuArrayString = "1234,4567,890" %}
{% set productSkuArray = productSkuArrayString|split(',') %}
{% if searchForSku in productSkuArray %}
<style>
#certain_div {
display: none;
}
</style>
{% endif %}
<!-- New Trial -->
<div id="certain_div">
This should show up
</div>
{% set searchForSku = "891" %}
{% set productSkuArrayString = "1234,4567,890" %}
{% set productSkuArray = productSkuArrayString|split(',') %}
{% if searchForSku in productSkuArray %}
<style>
#certain_div {
display: none;
}
</style>
{% endif %}
Will result in:
<div id="certain_div">
This should not show up
</div>
<style>
#certain_div {
display: none;
}
</style>
<!-- New Trial -->
<div id="certain_div">
This should show up
</div>
答案 1 :(得分:0)
您可以使用iterable
检查变量是数组还是可遍历对象:
img