Fonctions dans les templates Twig
Twig fournit plusieurs fonctions utiles que vous pouvez utiliser directement dans les templates.
Le cœur Drupal ajoute plusieurs fonctions personnalisées spécifiques à Drupal. Elles sont définies dans la classe TwigExtension.
Vous pouvez aussi définir vos propres fonctions Twig dans un module personnalisé (mais pas dans un thème). Pour un exemple, consultez le fichier core/modules/system/tests/modules/twig_extension_test/src/TwigExtension/TestExtension.php.
attach_library($library)
Attache une bibliothèque d’assets au template.
{{ attach_library('classy/node') }}
create_attribute($attributes)
Créez un nouvel objet Attribute dans un template Twig via la fonction create_attribute(). Ces objets peuvent être manipulés comme les autres objets Attribute dans Twig.
Voir l’annonce de changement : 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)
Cette fonction helper prend un URI de fichier et génère l’URL relative correspondante.
{{ file_url(node.field_example_image.entity.uri.value) }}
link($text, $uri, $attributes)
Cette fonction helper prend en premier paramètre text et en second uri.
Exemple :
{{ link(item.title, item.uri, { 'class':['foo', 'bar', 'baz']} ) }}
path($name, $parameters, $options)
Génère un chemin URL [relatif] en fonction du nom et des paramètres de route.
{# Lien vers la vue frontpage. #} <a href="{{ path('view.frontpage.page_1') }}">{{ 'View all content'|t }}</a> {# Lien vers la page profil d’un utilisateur. #} <a href="{{ path('entity.user.canonical', {'user': user.id}) }}">{{ 'View user profile'|t }}</a> {# Lien vers la page d’un nœud. #} <a href="{{ path('entity.node.canonical', {'node': node.id}) }}">{{ 'View node page'|t }}</a>
Les fonctions url et path sont proches de celles définies dans \Symfony\Bridge\Twig\Extension\RoutingExtension.
url($name, $parameters, $options)
Génère une URL absolue en fonction du nom de route et des paramètres :
<a href="{{ url('view.frontpage.page_1') }}">{{ 'View all content'|t }}</a>
Génère une URL absolue vers l’URL actuelle :
<a href="{{ url('<current>') }}">{{ 'Reload'|t }}</a>
Génère une URL absolue vers la page d’accueil :
<a href="{{ url('<front>') }}">{{ 'Home'|t }}</a>