我有一个对象,在JSON中,看起来像这样:
{
'class': ['nav-link', 'dropdown-toggle'],
'data-toggle': ['dropdown']
}
然后我需要能够将另一个类附加到对象内的类数组中。
这段代码似乎不起作用;它只是覆盖了类数组。
{% set link_attribs = { 'class' : ['nav-link', 'dropdown-toggle'], 'data-toggle':'dropdown'} %}
{% set link_attribs = link_attribs|merge({'class': ['highlighted']}) %}
我真的想做这样的事情,但它只会引发标点错误。
{% set link_attribs.class = link_attribs.class|merge(['highlighted']) %}
有什么想法吗?
答案 0 :(得分:3)
使用Twig,您无法直接设置对象属性,因此" set (...).class
"永远不会工作。但相反,您可以创建一个将继承default
和options
值的新变量(就像在大多数JavaScript代码中一样)。
例如:
{%
set options = link_attribs | merge({
'class': link_attribs.class | merge(['highlighted'])
})
%}
{% for class in options.class %}
{{ class }}
{% endfor %}
将显示:
nav-link
dropdown-toggle
highlighted
请参阅fiddle。
答案 1 :(得分:1)
这看起来很有效:
{% set c = link_attribs.class %}
{% set c = c|merge(['highlighted']) %}
{% set link_attribs = link_attribs|merge({'class': c}) %}
不确定它是否是最优雅的方式。