如果使用symfony的twig模板引擎满足给定条件,我试图将某个类添加到锚元素中,以下代码片段用于尝试实现此目的:
{% if colors is defined and colors is not empty %}
{% for keys, c in colors %}
<li>
<a id="{{ keys }}" data-rel="tooltip" data-placement="top" title="{{ c.color|capitalize }}" class="picker-btn{{ (colorData[keys] is defined and colorData[keys]['code'] == c.hexcode) ? ' selected':'' }}" style="background: {{ c.hexcode }}" data-color-id="{{ c.id }}" data-color-text="{{ c.color }}" data-color-code="{{ c.hexcode }}"></a>
</li>
{% endfor %}
{% endif %}
上面的代码正确地将selected
类添加到第一个锚元素中,即使我期望为此类分配3个锚元素:
{% if colors is defined and colors is not empty %}
{% for keys, c in colors %}
<li>
<a id="{{ keys }}" data-rel="tooltip" data-placement="top" title="{{ c.color|capitalize }}" class="picker-btn{{ (colorData[keys] is defined and colorData[keys]['code'] in colors | keys) ? ' selected':'' }}" style="background: {{ c.hexcode }}" data-color-id="{{ c.id }}" data-color-text="{{ c.color }}" data-color-code="{{ c.hexcode }}"></a>
</li>
{% endfor %}
{% endif %}
第二个代码片段将selected
类添加到3个锚元素,因为无论您希望查看它,colorData[keys]['code']
都有colors
数组中存在的键,即使该类不是& #39; t被添加到正确的锚元素中。我的问题是这个;如果comparison operator (==)
为匹配的变量值返回true
,为什么第一个代码片段不起作用?为什么第二个代码片段将这个类添加到错误的锚元素中?
colors
数组的那个是:
答案 0 :(得分:3)
关于第一个例子,您需要进行比较:
在此比较之后,它在colorData[keys] is defined
条件下完成了3次。你在这里可以做的是再添加一个循环。
{% if colors is defined and colors is not empty %}
{% for keys, c in colors %}
<li>
{% set isColorInColorData = false %}
{% for exactColor in colorData %}
{% if exactColor.code == c.hexcode %}
{% set isColorInColorData = true %}
{% endif %}
{% endfor %}
<a id="{{ keys }}" data-rel="tooltip" data-placement="top" title="{{ c.color|capitalize }}" class="picker-btn{{ isColorInColorData ? ' selected':'' }}" style="background: {{ c.hexcode }}" data-color-id="{{ c.id }}" data-color-text="{{ c.color }}" data-color-code="{{ c.hexcode }}"></a>
</li>
{% endfor %}
{% endif %}
查看第二个示例,您需要将字符串与整数进行比较。
请注意&#34; #FFFFFF&#34;在PHP !!中等于&#34;(==)为0 !!
所以你必须真正专注于你比较的东西。在树枝中没有===
运算符。
答案 1 :(得分:1)
使用第一个代码,您说
colorData[keys] is defined and colorData[keys]['code'] == c.hexcode
当你循环遍历3个项目的数组时,keys
将是0,1,2(或者假设是1,2,3,因为它是Twig)。所以你要说
colorData[0]['code'] == c.hexcode
即。将colorData [0]与colors [0]进行比较,将#FFFFFF == #FFFFFF与它进行比较。
第二次迭代,然后你将colorData [1]与颜色[1]进行比较,#795548 ==#222222也是如此,等等。