Хорошо, это ужасно, но это единственный способ, которым я нашел, чтобы получить эту работу:
Если посмотреть на массиве построить Друпали по умолчанию для вашей ссылки, вы должны видеть, что content.field_c_button_link.0 массив (4)
'#type' => string(4) "link"
'#title' => string(15) "Big Blue Button"
'#options' => array(0)
'#url' => object Drupal\Core\Url(11)
Таким образом, чтобы установить классы непосредственно на <a>
теге мы должны загрузить «#options» (который в настоящее время пуст) с правой настройки подмассивов
'#options' => array(1)
'attributes' => array(1)
'class' => array(2)
string(6) "button"
string(4) "blue"
Единственный способ, которым я мог бы найти, чтобы сделать это в веточке было использовать ряд временных секретарей и их слияние с исходного массива, потому что прут не будет больше ничего разобрать я попробовал:
{% set temp = {'attributes': {'class': ['button','blue']}} %}
{% set temp2 = content.field_c_button_link.0 %}
{% set temp2 = temp2|merge({'#options': temp}) %}
{% set temp3 = content.field_c_button_link|without('0') %}
{% set temp3 = temp3|merge({'0': temp2}) %}
{% set content = content|merge({'field_c_button_link': temp3}) %}
Примечание к | без которого является фильтром Drupal/twig. Я должен был использовать его, чтобы удалить пустой элемент «0», чтобы избежать двойной печати ссылки.
Пожалуйста, скажите мне, что есть более простой способ.
Вы должны попробовать {{content.field_c_button_link [0] .addClass ('button blue')}} – Eyal