Filtri - Modifica delle variabili nei template Twig
I filtri in Twig possono essere usati per modificare le variabili. I filtri sono separati dalla variabile con il simbolo della barra verticale. Possono avere argomenti opzionali tra parentesi. È possibile concatenare più filtri: l’output di un filtro viene applicato al successivo.
Esempio:
{{ content|safe_join(", ")|lower }}
A volte è necessario renderizzare un elemento prima di applicargli un filtro:
{{ item|render|filter }}
Twig fornisce molti filtri integrati, che puoi consultare nella loro documentazione ufficiale. Drupal include numerosi filtri propri.
Filtri speciali di Drupal
Essi sono dichiarati in TwigExtension::getFilters().
Filtri di traduzione
trans
Questo filtro (alternativamente, t) esegue la variabile tramite la funzione t() di Drupal, che restituisce la stringa tradotta. Questo filtro deve essere usato per qualsiasi stringa di interfaccia inserita manualmente in un template che sarà mostrata agli utenti.
Esempio:
<a href="{{ url('<front>') }}" title="{{ 'Home'|t }}" rel="home" class="site-logo"></a>
placeholder
Questo filtro esegue l’escape del contenuto in HTML e lo formatta con drupal_placeholder(), consentendo di mostrare testo evidenziato.
Esempio:
{% trans %}Submitted on {{ date|placeholder }}{% endtrans %}
Traduzione non sicura
Alcuni pattern non sono sicuri e non devono essere usati, perché passano la variabile direttamente nella traduzione. Questo non solo gonfia l’elenco delle stringhe da tradurre, ma rappresenta anche una potenziale vulnerabilità, specialmente se l’output può provenire dall’utente. Alcuni esempi di traduzione errata:
{# NON FARE QUESTO #}
{{ var1|t }}
{{ var1|placeholder }}
{% trans %}{{ var1 }}{% endtrans %}
Filtri aggiuntivi
clean_class
Prepara una stringa per l’uso come nome di classe HTML valido. Vedi Html::getClass()
clean_id
Prepara una stringa per l’uso come identificatore HTML valido. Vedi Html::getID()
format_date
Prepara un timestamp per l’uso come stringa di data formattata. Vedi DateFormatter::format()
raw
Questo filtro dovrebbe essere evitato il più possibile, specialmente se si stampano dati che possono provenire dagli utenti. Vedi questa pagina per ulteriori informazioni sull’auto-escaping in Drupal 8.
render
Questo filtro è un wrapper per la funzione render(). Accetta un render array e restituisce il markup HTML renderizzato. È utile se vuoi applicare ulteriori filtri (ad esempio, parsing di tag) o se vuoi impostare condizioni in base all’output renderizzato (ad esempio, se un array di render non vuoto restituisce una stringa vuota). Può anche essere usato con stringhe e alcuni oggetti che implementano il metodo toString().
safe_join
Il filtro safe_join unisce più stringhe insieme utilizzando un separatore. Vedi TwigExtension::safeJoin().
Esempio:
{{ items|safe_join(', ') }}
Questo stamperà ciascuna stringa contenuta nella variabile items, unendole con una virgola come separatore.
without
Il filtro without crea una copia del render array e rimuove i figli corrispondenti alle chiavi indicate negli argomenti. La copia può quindi essere stampata senza quegli elementi. L’array originale resta disponibile e può essere stampato per intero in un template Twig. Vedi twig_without.
Esempi:
{{ content|without('links') }}
Questo stampa tutto ciò che si trova nella variabile content, eccetto content.links.
{{ content|without('links', 'field_some_data') }}
Esempio di esclusione di due elementi dalla visualizzazione. Questo escluderà «links» e «field_some_data».