Filtros - Modificaci贸n de variables en plantillas Twig
Los filtros en Twig pueden usarse para modificar variables. Los filtros se separan de la variable mediante el s铆mbolo de barra vertical (pipe). Pueden tener argumentos opcionales entre par茅ntesis. Varios filtros pueden encadenarse. La salida de un filtro se aplica al siguiente.
Ejemplo:
{{ content|safe_join(", ")|lower }}
Puede que necesites renderizar un elemento antes de filtrarlo:
{{ item|render|filter }}
Twig viene con muchos filtros incorporados que puedes consultar en su documentaci贸n oficial. Drupal tiene muchos filtros propios.
Filtros especiales de Drupal
Est谩n declarados en TwigExtension::getFilters().
Filtros de traducci贸n
trans
Este filtro (alternativamente, t) pasa la variable por la funci贸n Drupal t(), que devuelve la cadena traducida. Este filtro debe usarse para cualquier cadena de interfaz colocada manualmente en la plantilla que se mostrar谩 a los usuarios.
Ejemplo:
<a href="{{ url('<front>') }}" title="{{ 'Inicio'|t }}" rel="home" class="site-logo"></a>
placeholder
Este filtro escapa el contenido en HTML y lo formatea usando drupal_placeholder(), lo que permite mostrar texto resaltado.
Ejemplo:
{% trans %}Enviado el {{ date|placeholder }}{% endtrans %}
Traducci贸n insegura
Algunas plantillas son inseguras y no deber铆an usarse porque pasan la variable directamente a la traducci贸n. Esto no solo inflar谩 la lista de cadenas para traducir, sino que tambi茅n es una posible vulnerabilidad, especialmente si la salida puede ser introducida por el usuario. Algunos ejemplos incorrectos de traducci贸n:
{# NO HAGAS ESTO #}
{{ var1|t }}
{{ var1|placeholder }}
{% trans %}{{ var1 }}{% endtrans %}
Filtros adicionales
clean_class
Este filtro prepara una cadena para usarse como un nombre v谩lido de clase HTML. Ver Html::getClass()
clean_id
Este filtro prepara una cadena para usarse como un identificador v谩lido de HTML. Ver Html::getID()
format_date
Este filtro prepara una marca temporal para usarse como una cadena de fecha formateada. Ver DateFormatter::format()
raw
Se debe evitar este filtro cuando sea posible, especialmente si se muestran datos que podr铆an ser introducidos por el usuario. Consulta esta p谩gina para m谩s informaci贸n sobre autoescape en Drupal 8.
render
Este filtro es un contenedor para la funci贸n render(). Recibe un array de renderizado y devuelve la salida HTML renderizada. Puede ser 煤til si quieres aplicar un filtro adicional (por ejemplo, an谩lisis de etiquetas), o si quieres hacer una condici贸n basada en la salida renderizada (por ejemplo, si tienes un array de renderizado no vac铆o que devuelve una cadena vac铆a). Tambi茅n puede usarse para cadenas y ciertos objetos, principalmente aquellos que implementan el m茅todo toString().
safe_join
El filtro safe_join une varias cadenas usando un separador proporcionado. Ver TwigExtension::safeJoin().
Ejemplo:
{{ items|safe_join(', ') }}
Esto imprimir谩 cada cadena en la variable items unida con comas separando cada elemento.
without
El filtro without crea una copia del array de renderizado y elimina los elementos hijos por clave que se pasan como argumentos al filtro. La copia puede imprimirse sin esos elementos. El array original de renderizado sigue disponible y puede usarse para imprimir todos los hijos en la plantilla de rama. Ver twig_without.
Ejemplos:
{{ content|without('links') }}
Esto imprime todo en la variable content excepto content.links.
{{ content|without('links', 'field_some_data') }}
Ejemplo para excluir dos elementos de la salida. Esto excluir谩 芦links禄 y 芦field_some_data禄.