Хорошо, это ужасно, но это единственный способ заставить это работать:
Если вы посмотрите на массив сборки drupal по умолчанию для вашей ссылки, вы увидите, что 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"
Единственный способ, которым я смог найти это в twig, - это использовать серию временных файлов и объединить их с исходным массивом, потому что twig не будет анализировать что-либо еще, что я пробовал:
{% 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», чтобы ссылка не печаталась дважды.
Подскажите, пожалуйста, есть ли способ проще.
person
dan433
schedule
29.02.2016