Filters – Het wijzigen van variabelen in Twig-sjablonen
Filters in Twig kunnen worden gebruikt om variabelen te wijzigen. Filters worden gescheiden van de variabele door een pipe-symbool. Ze kunnen optionele argumenten tussen haakjes hebben. Meerdere filters kunnen aan elkaar gekoppeld worden. De uitvoer van het ene filter wordt doorgegeven aan het volgende.
Voorbeeld:
{{ content|safe_join(", ")|lower }}
Het kan nodig zijn om een element te renderen voordat je er een filter op toepast:
{{ item|render|filter }}
Twig wordt geleverd met veel ingebouwde filters die je kunt bekijken in de officiële documentatie. Drupal heeft daarnaast een aantal eigen filters.
Drupal-specifieke filters
Deze zijn gedefinieerd in TwigExtension::getFilters().
Vertaalfilters
trans
Dit filter (alternatief: t) voert de variabele door de Drupal-functie t(), die de vertaalde string retourneert. Dit filter moet gebruikt worden voor alle interfacestrings die handmatig in een sjabloon zijn geplaatst en zichtbaar zijn voor gebruikers.
Voorbeeld:
<a href="{{ url('<front>') }}" title="{{ 'Home'|t }}" rel="home" class="site-logo"></a>
placeholder
Dit filter escapt de inhoud in HTML en formatteert deze met drupal_placeholder(), zodat gemarkeerde tekst correct weergegeven kan worden.
Voorbeeld:
{% trans %}Submitted on {{ date|placeholder }}{% endtrans %}
Onveilige vertaling
Sommige sjabloonpatronen zijn onveilig en mogen niet gebruikt worden omdat ze de variabele rechtstreeks doorgeven aan de vertaling. Dit vergroot niet alleen onnodig de lijst van vertaalstrings, maar kan ook een veiligheidsrisico vormen, vooral als de uitvoer door gebruikers ingevoerd kan worden. Voorbeelden van foutief gebruik:
{# DOE DIT NIET #}
{{ var1|t }}
{{ var1|placeholder }}
{% trans %}{{ var1 }}{% endtrans %}
Extra filters
clean_class
Bereidt een string voor om te gebruiken als geldige HTML-klassenaam. Zie Html::getClass().
clean_id
Bereidt een string voor om te gebruiken als geldige HTML-id. Zie Html::getID().
format_date
Formatteert een timestamp als een datumstring. Zie DateFormatter::format().
raw
Dit filter moet zoveel mogelijk vermeden worden, zeker als je data output die door gebruikers kan zijn ingevoerd. Zie deze pagina voor meer informatie over auto-escaping in Drupal 8.
render
Dit filter is een wrapper voor de render()-functie. Het accepteert een render-array en geeft de gerenderde HTML terug. Dit kan handig zijn om extra filters toe te passen (zoals tag parsing) of om een conditie te maken gebaseerd op de gerenderde uitvoer (bijvoorbeeld wanneer een render-array een lege string teruggeeft). Het kan ook gebruikt worden voor strings en objecten die een toString()-methode implementeren.
safe_join
Het filter safe_join voegt meerdere strings samen met een opgegeven scheidingsteken. Zie TwigExtension::safeJoin().
Voorbeeld:
{{ items|safe_join(', ') }}
Dit zal alle strings in de variabele items samenvoegen, gescheiden door komma’s.
without
Het without-filter maakt een kopie van een render-array en verwijdert child-elementen op basis van de sleutels die als argument zijn opgegeven. De kopie kan worden weergegeven zonder die elementen. De originele render-array blijft beschikbaar en kan volledig getoond worden in het Twig-sjabloon. Zie twig_without.
Voorbeelden:
{{ content|without('links') }}
Dit toont alles in de variabele content behalve content.links.
{{ content|without('links', 'field_some_data') }}
Voorbeeld waarbij twee elementen uitgesloten worden: dit verwijdert «links» en «field_some_data».