Functies – in Twig-sjablonen
Twig biedt een aantal handige functies die je direct in sjablonen kunt gebruiken.
De Drupal-core voegt enkele extra functies toe die specifiek zijn voor Drupal. Deze zijn gedefinieerd in de TwigExtension-klasse.
Je kunt ook je eigen Twig-functies definiëren in een custom module (maar niet in een thema). Voor een voorbeeld zie het bestand core/modules/system/tests/modules/twig_extension_test/src/TwigExtension/TestExtension.php.
attach_library($library)
Voegt een asset-library toe aan het sjabloon.
{{ attach_library('classy/node') }}
create_attribute($attributes)
Maak nieuwe Attribute-objecten aan met de functie create_attribute() binnen een Twig-sjabloon. Deze objecten kunnen op dezelfde manier worden gemanipuleerd als andere Attribute-objecten die beschikbaar zijn in een Twig-sjabloon.
Zie de 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)
Deze helperfunctie neemt een URI van een bestand en genereert een relatieve URL naar het bestand.
{{ file_url(node.field_example_image.entity.uri.value) }}
link($text, $uri, $attributes)
Deze helperfunctie neemt als eerste parameter de tekst en als tweede de uri.
Voorbeeld:
{{ link(item.title, item.uri, { 'class':['foo', 'bar', 'baz']} ) }}
path($name, $parameters, $options)
Genereert een relatieve URL met de opgegeven routenaam en parameters.
{# Link naar de voorpagina-view. #}
<a href="{{ path('view.frontpage.page_1') }}">{{ 'View all content'|t }}</a>
{# Link naar gebruikersprofiel. #}
<a href="{{ path('entity.user.canonical', {'user': user.id}) }}">{{ 'View user profile'|t }}</a>
{# Link naar node-pagina. #}
<a href="{{ path('entity.node.canonical', {'node': node.id}) }}">{{ 'View node page'|t }}</a>
De functies url en path zijn gebaseerd op de implementatie in \Symfony\Bridge\Twig\Extension\RoutingExtension.
url($name, $parameters, $options)
Genereert een absolute URL op basis van routenaam en parameters:
<a href="{{ url('view.frontpage.page_1') }}">{{ 'View all content'|t }}</a>
Genereer een absolute URL voor de huidige pagina:
<a href="{{ url('<current>') }}">{{ 'Reload'|t }}</a>
Genereer een absolute URL voor de frontpagina:
<a href="{{ url('<front>') }}">{{ 'Home'|t }}</a>