Twig:附加到数组/对象内的数组

Nic*_*ick 3 arrays drupal symfony twig drupal-8

我有一个 JSON 格式的对象,如下所示:

{
  'class': ['nav-link', 'dropdown-toggle'],
  'data-toggle': ['dropdown']
}
Run Code Online (Sandbox Code Playgroud)

然后我需要能够将另一个类附加到对象内的类数组中。

这段代码似乎不起作用;它只是覆盖类数组。

{% set link_attribs = { 'class' : ['nav-link', 'dropdown-toggle'], 'data-toggle':'dropdown'} %}
{% set link_attribs = link_attribs|merge({'class': ['highlighted']}) %}
Run Code Online (Sandbox Code Playgroud)

我真的想做这样的事情,但它只会引发标点符号错误。

{% set link_attribs.class = link_attribs.class|merge(['highlighted']) %}
Run Code Online (Sandbox Code Playgroud)

有任何想法吗?

Ala*_*blo 5

使用Twig,你不能直接设置对象属性,所以“ set (...).class”永远不会起作用。default但是,您可以创建一个从和值继承的新变量options(就像在大多数 JavaScript 代码中一样)。

例如:

{%
  set options = link_attribs | merge({
      'class': link_attribs.class | merge(['highlighted']) 
  })
%}

{% for class in options.class %}
  {{ class }}
{% endfor %}
Run Code Online (Sandbox Code Playgroud)

将显示:

nav-link
dropdown-toggle
highlighted
Run Code Online (Sandbox Code Playgroud)

参见小提琴