Funzioni - nei template Twig
Twig fornisce una serie di funzioni utili che possono essere utilizzate direttamente nei template.
Il core di Drupal aggiunge alcune funzioni personalizzate specifiche per Drupal. Sono definite nella classe TwigExtension.
Puoi anche definire le tue funzioni Twig in un modulo personalizzato (ma non in un tema). Per un esempio su come farlo, consulta questo file di esempio: core/modules/system/tests/modules/twig_extension_test/src/TwigExtension/TestExtension.php.
attach_library($library)
Allega una libreria di asset al template.
{{ attach_library('classy/node') }}
create_attribute($attributes)
Crea nuovi oggetti Attribute con la funzione create_attribute() all’interno del template Twig. Questi oggetti possono essere manipolati come qualsiasi altro oggetto Attribute disponibile in Twig.
Vedi la change record: https://www.drupal.org/node/2818293
{% set my_attribute = create_attribute() %}
{%
set my_classes = [
'kittens',
'llamas',
'puppies',
]
%}
<div{{ my_attribute.addClass(my_classes).addAttribute('id', 'myUniqueId') }}>
{{ content }}
</div>
<div{{ create_attribute({'class': ['region', 'region--header']}) }}>
{{ content }}
</div>
file_url($uri)
Questa funzione helper prende un URI di file e genera un percorso URL relativo al file.
{{ file_url(node.field_example_image.entity.uri.value) }}
link($text, $uri, $attributes)
Questa funzione helper accetta come primo parametro il testo e come secondo l’uri.
Esempi:
{{ link(item.title, item.uri, { 'class':['foo', 'bar', 'baz']} ) }}
path($name, $parameters, $options)
Crea un URL relativo in base al nome della route e ai parametri.
{# Link alla vista frontpage. #}
<a href="{{ path('view.frontpage.page_1') }}">{{ 'View all content'|t }}</a>
{# Link alla pagina profilo dell’utente. #}
<a href="{{ path('entity.user.canonical', {'user': user.id}) }}">{{ 'View user profile'|t }}</a>
{# Link alla pagina del nodo. #}
<a href="{{ path('entity.node.canonical', {'node': node.id}) }}">{{ 'View node page'|t }}</a>
Le funzioni url e path sono definite in prossimità di quelle contenute in \Symfony\Bridge\Twig\Extension\RoutingExtension.
url($name, $parameters, $options)
Crea un URL assoluto in base al nome della route e ai parametri:
<a href="{{ url('view.frontpage.page_1') }}">{{ 'View all content'|t }}</a>
Crea un URL assoluto per l’URL corrente:
<a href="{{ url('<current>') }}">{{ 'Reload'|t }}</a>
Crea un URL assoluto per la homepage:
<a href="{{ url('<front>') }}">{{ 'Home'|t }}</a>