Filtros de Latte
En las plantillas podemos usar funciones que ayudan a modificar o dar formato a los datos hasta su forma final. Las llamamos filtros.
capitalize |
minúsculas, con la primera letra de cada palabra en mayúscula |
firstLower |
convierte la primera letra a minúscula |
firstUpper |
convierte la primera letra a mayúscula |
lower |
convierte a minúsculas |
upper |
convierte a mayúsculas |
ceil |
redondea un número hacia arriba con la precisión indicada |
floor |
redondea un número hacia abajo con la precisión indicada |
round |
redondea un número con la precisión indicada |
accept |
acepta el nuevo comportamiento de los atributos inteligentes |
toggle |
alterna la presencia de un atributo HTML |
escapeUrl |
escapa un parámetro en una URL |
noescape |
imprime una variable sin escapar |
query |
genera una query string en una URL |
Existen además filtros de escapado para HTML (escapeHtml y escapeHtmlComment), XML
(escapeXml), JavaScript (escapeJs), CSS (escapeCss) e iCalendar (escapeICal),
que Latte usa por sí mismo gracias al escapado sensible al contexto y que usted no
necesita escribir.
checkUrl |
limpia una URL de entradas peligrosas |
nocheck |
impide la limpieza automática de la URL |
Latte comprueba automáticamente los
atributos src y href, así que casi no necesita usar el filtro checkUrl.
Todos los filtros integrados están pensados para cadenas en codificación UTF‑8.
Uso
Los filtros se escriben tras el símbolo de tubería (se admite un espacio delante):
<h1>{$heading|upper}</h1>
Los filtros se pueden encadenar y se aplican en orden de izquierda a derecha:
<h1>{$heading|lower|capitalize}</h1>
Los parámetros se indican tras el nombre del filtro, separados por dos puntos o comas:
<h1>{$heading|truncate:20,''}</h1>
Los filtros también se pueden aplicar a una expresión:
{var $name = ($title|upper) . ($subtitle|lower)}
Los filtros personalizados se pueden registrar así:
$latte = new Latte\Engine;
$latte->addFilter('shortify', fn(string $s, int $len = 10) => mb_substr($s, 0, $len));
Después se llaman en la plantilla de este modo:
<p>{$text|shortify}</p>
<p>{$text|shortify:100}</p>
Filtros nullsafe
Cualquier filtro se puede hacer nullsafe usando ?| en lugar de |. Si el valor es null,
el filtro no se ejecuta y se devuelve null. Los filtros siguientes de la cadena también se omiten.
Esto resulta útil en combinación con los atributos HTML, que se omiten si el valor es null.
<div title={$title?|upper}>
{* Si $title es null: <div> *}
{* Si $title es 'hello': <div title="HELLO"> *}
Filtros
accept
El filtro se usa durante la migración desde Latte 3.0 para confirmar que ha revisado el cambio de comportamiento del atributo y lo acepta. No modifica el valor.
Es una herramienta temporal. Una vez completada la migración y desactivadas las advertencias de migración, debería eliminar este filtro de sus plantillas.
batch (int $length, mixed $rest=null): Generator
Filtro que simplifica mostrar datos lineales en forma de tabla. Devuelve un generador de arrays con el número de elementos indicado. Si proporciona un segundo parámetro, se usará para rellenar los elementos que falten en la última fila.
{var $items = ['a', 'b', 'c', 'd', 'e']}
<table>
{foreach ($items|batch: 3, 'No item') as $row}
<tr>
{foreach $row as $column}
<td>{$column}</td>
{/foreach}
</tr>
{/foreach}
</table>
Imprime:
<table>
<tr>
<td>a</td>
<td>b</td>
<td>c</td>
</tr>
<tr>
<td>d</td>
<td>e</td>
<td>No item</td>
</tr>
</table>
Vea también group y la etiqueta iterateWhile.
breakLines
Inserta una etiqueta HTML <br> antes de cada carácter de salto de línea.
{var $s = "Text & with \n newline"}
{$s|breakLines} {* muestra "Text & with <br>\n newline" *}
bytes (int $precision=2)
Da formato a un tamaño en bytes en una forma legible para el ser humano. Si está definida la configuración regional, se usan los separadores decimales y de millares correspondientes.
{$size|bytes} {* 0 B, 1.25 GB, … *}
{$size|bytes:0} {* 10 B, 1 GB, … *}
ceil (int $precision=0)
Redondea un número hacia arriba con la precisión indicada.
{=3.4|ceil} {* muestra 4 *}
{=135.22|ceil:1} {* muestra 135.3 *}
{=135.22|ceil:3} {* muestra 135.22 *}
capitalize
Las palabras empezarán con letra mayúscula y el resto de caracteres quedarán en minúscula. Requiere la extensión
mbstring de PHP.
{='i like LATTE'|capitalize} {* muestra 'I Like Latte' *}
Vea también firstLower, firstUpper, lower, upper.
checkUrl
Fuerza la limpieza de la URL. Comprueba si la URL usa un esquema seguro (http, https,
ftp, mailto, tel, sms) o es un enlace relativo, y bloquea los esquemas
peligrosos, como javascript:, que podrían suponer un riesgo de seguridad.
{var $link = 'javascript:window.close()'}
<a data-href={$link|checkUrl}>checked</a>
<a data-href={$link}>unchecked</a>
Imprime:
<a data-href="">checked</a>
<a data-href="javascript:window.close()">unchecked</a>
Vea también nocheck.
clamp (int|float $min, int|float $max)
Acota un valor al rango inclusivo indicado por min y max.
{$level|clamp: 0, 255}
Existe también como función.
column (string|int|null $columnKey, string|int|null $indexKey=null)
Devuelve como un array nuevo los valores de una sola columna $columnKey de un array multidimensional. También se
puede usar con arrays de objetos para extraer los valores de una propiedad.
{var $users = [
[id: 30, name: 'John', age: 30],
[id: 32, name: 'Jane', age: 25],
[id: 33, age: 35],
]}
{$users|column: 'name'}
{* devuelve ['John', 'Jane'] *}
{$users|column: 'name', 'id'}
{* devuelve [30 => 'John', 32 => 'Jane'] *}
Si pasa null como clave de columna, reindexará el array según $indexKey.
commas (?string $lastGlue=null)
Une los elementos de un array con coma y espacio (', '). Un atajo cómodo para enumerar elementos en un formato
legible.
{var $items = ['apples', 'oranges', 'bananas']}
{$items|commas}
{* muestra 'apples, oranges, bananas' *}
También puede indicar un separador propio para el último par de elementos:
{$items|commas: ' and '}
{* muestra 'apples, oranges and bananas' *}
{=['PHP', 'JavaScript', 'Python']|commas: ', or '}
{* muestra 'PHP, JavaScript, or Python' *}
Vea también implode.
dataStream (?string $type=null)
Convierte el contenido al esquema data URI. Esto permite incrustar imágenes en HTML o CSS sin necesidad de enlazar archivos
externos. Si $type es null, el tipo MIME se detecta automáticamente.
Supongamos que tenemos una imagen en la variable $img = Image::fromFile('image.gif'), entonces
<img src={$img|dataStream}>
Imprime, por ejemplo:
<img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUA
AAAFCAYAAACNbyblAAAAHElEQVQI12P4//8/w38GIAXDIBKE0DHxgljNBAAO
9TXL0Y4OHwAAAABJRU5ErkJggg==">
Requiere la extensión fileinfo de PHP.
date (string $format='j. n. Y')
Da formato a una fecha y una hora según la máscara que usa la función de PHP date. El
filtro acepta la fecha como marca de tiempo UNIX, como cadena, como DateTimeInterface o como objeto
DateInterval.
{$today|date:'j. n. Y'}
Vea también localDate.
escapeUrl
Escapa una variable para usarla como parámetro en una URL.
<a href="http://example.com/{$name|escapeUrl}">{$name}</a>
Vea también query.
explode (string
$separator='')
Divide una cadena en un array por un delimitador. Alias de split.
{='one,two,three'|explode:','} {* devuelve ['one', 'two', 'three'] *}
Si el delimitador es una cadena vacía (el valor predeterminado), la entrada se dividirá en caracteres sueltos:
{='123'|explode} {* devuelve ['1', '2', '3'] *}
También puede usar el alias split:
{='1,2,3'|split:','} {* devuelve ['1', '2', '3'] *}
Vea también implode.
filter (callable $predicate): iterable
Filtra los elementos de un array o un iterador y conserva solo aquellos para los que el predicado devuelve true.
Las claves se conservan.
{foreach ($people|filter: fn($person) => $person->age >= 18) as $adult}
<p>{$adult->name}</p>
{/foreach}
first
Devuelve el primer elemento de un array o el primer carácter de una cadena:
{=[1, 2, 3, 4]|first} {* muestra 1 *}
{='abcd'|first} {* muestra 'a' *}
floor (int $precision=0)
Redondea un número hacia abajo con la precisión indicada.
{=3.5|floor} {* muestra 3 *}
{=135.79|floor:1} {* muestra 135.7 *}
{=135.79|floor:3} {* muestra 135.79 *}
firstLower
Convierte la primera letra a minúscula. Requiere la extensión mbstring de PHP.
{='The Latte'|firstLower} {* muestra 'the Latte' *}
Vea también capitalize, firstUpper, lower, upper.
firstUpper
Convierte la primera letra a mayúscula. Requiere la extensión mbstring de PHP.
{='the latte'|firstUpper} {* muestra 'The latte' *}
Vea también capitalize, firstLower, lower, upper.
group (string|int|\Closure $by): iterable
El filtro agrupa los datos según distintos criterios.
En este ejemplo, las filas de la tabla se agrupan por la columna categoryId. La salida es una estructura iterable
de grupos, donde la clave es el valor de la columna categoryId. Lea la guía detallada.
{foreach ($items|group: categoryId) as $categoryId => $categoryItems}
<ul>
{foreach $categoryItems as $item}
<li>{$item->name}</li>
{/foreach}
</ul>
{/foreach}
Vea también batch, la función group y la etiqueta iterateWhile.
implode (string $glue='')
Devuelve una cadena resultante de concatenar los elementos de la secuencia. Alias de join.
{=[1, 2, 3]|implode} {* muestra '123' *}
{=[1, 2, 3]|implode:'|'} {* muestra '1|2|3' *}
También puede usar el alias join:
{=[1, 2, 3]|join} {* muestra '123' *}
indent (int $level=1, string
$chars="\t")
Sangra el texto por la izquierda un número dado de tabuladores u otros caracteres indicados en el segundo argumento. Las líneas vacías no se sangran.
<div>
{block |indent}
<p>Hello</p>
{/block}
</div>
Imprime:
<div>
<p>Hello</p>
</div>
last
Devuelve el último elemento de un array o el último carácter de una cadena:
{=[1, 2, 3, 4]|last} {* muestra 4 *}
{='abcd'|last} {* muestra 'd' *}
length
Devuelve la longitud de una cadena o un array.
- para las cadenas, devuelve la longitud en caracteres UTF‑8
- para los arrays, devuelve el número de elementos
- para los objetos que implementan la interfaz Countable, usa el valor devuelto por el método
count() - para los objetos que implementan la interfaz Traversable, usa el valor devuelto por la
función
iterator_count()
{if ($users|length) > 10}
...
{/if}
localDate (?string $format=null, ?string $date=null, ?string $time=null)
Da formato a la fecha y la hora según la configuración regional, lo que garantiza una
presentación coherente y localizada de los datos temporales en distintos idiomas y regiones. El filtro acepta la fecha como marca
de tiempo UNIX, como cadena o como objeto DateTimeInterface.
{$date|localDate} {* 15 de abril de 2024 *}
{$date|localDate: format: yM} {* 4/2024 *}
{$date|localDate: date: medium} {* 15 abr 2024 *}
Si usa el filtro sin parámetros, imprimirá la fecha en el nivel long, véase más abajo.
a) Usando format
El parámetro format describe qué componentes temporales deben mostrarse. Usa códigos de letra, donde el número
de repeticiones influye en la anchura de la salida:
| Año | y / yy / yyyy |
2024 / 24 / 2024 |
| Mes | M / MM / MMM / MMMM |
8 / 08 / Aug / August |
| Día | d / dd / E / EEEE |
1 / 01 / Sun / Sunday |
| Hora | j / H / h |
preferida / 24 horas / 12 horas |
| Minuto | m / mm |
5 / 05 (2 dígitos combinado con los segundos) |
| Segundo | s / ss |
8 / 08 (2 dígitos combinado con los minutos) |
El orden de los códigos en el formato no importa, porque el orden de los componentes se mostrará según las convenciones de
la configuración regional. El formato es, por tanto, independiente de esta. Por ejemplo, el formato yyyyMMMMd
imprime April 15, 2024 en la configuración en_US, mientras que en cs_CZ imprime
15. dubna 2024:
| locale: | cs_CZ | en_US |
|---|---|---|
format: 'dMy' |
10. 8. 2024 | 8/10/2024 |
format: 'yM' |
8/2024 | 8/2024 |
format: 'yyyyMMMM' |
srpen 2024 | August 2024 |
format: 'MMMM' |
srpen | August |
format: 'jm' |
17:22 | 5:22 PM |
format: 'Hm' |
17:22 | 17:22 |
format: 'hm' |
5:22 odp. | 5:22 PM |
b) Usando estilos predefinidos
Los parámetros date y time determinan con cuánto detalle deben mostrarse la fecha y la hora. Puede
elegir entre varios niveles: full, long, medium, short. Puede mostrar solo la
fecha, solo la hora o ambas:
| locale: | cs_CZ | en_US |
|---|---|---|
date: short |
23.01.78 | 1/23/78 |
date: medium |
23. 1. 1978 | Jan 23, 1978 |
date: long |
23. ledna 1978 | January 23, 1978 |
date: full |
pondělí 23. ledna 1978 | Monday, January 23, 1978 |
time: short |
8:30 | 8:30 AM |
time: medium |
8:30:59 | 8:30:59 AM |
time: long |
8:30:59 SEČ | 8:30:59 AM GMT+1 |
date: short, time: short |
23.01.78 8:30 | 1/23/78, 8:30 AM |
date: medium, time: short |
23. 1. 1978 8:30 | Jan 23, 1978, 8:30 AM |
date: long, time: short |
23. ledna 1978 v 8:30 | January 23, 1978 at 8:30 AM |
Para la fecha puede usar además el prefijo relative- (por ejemplo, relative-short), que en las
fechas cercanas al presente mostrará ayer, hoy o mañana; en los demás casos, la
mostrará de la forma habitual.
{$date|localDate: date: relative-short} {* ayer *}
Vea también date.
lower
Convierte una cadena a minúsculas. Requiere la extensión mbstring de PHP.
{='LATTE'|lower} {* muestra 'latte' *}
Vea también capitalize, firstLower, firstUpper, upper.
map (callable $transformer): iterable
Transforma cada elemento de un array o un iterador mediante un callback y devuelve un iterador nuevo. Es la contraparte del filtro filter. Las claves se conservan.
{=($users|map: fn($user) => $user->name)|implode: ', '} {* John, Mary, Paul *}
Vea también filter.
nocheck
Impide la limpieza automática de la URL. Latte comprueba automáticamente si una URL usa un
esquema seguro (como http, https, ftp, mailto, tel,
sms) o es un enlace relativo, y bloquea los potencialmente peligrosos.
Si el enlace usa otro esquema, como javascript: o data:, y está seguro de su contenido, puede
desactivar la comprobación con |nocheck.
{var $link = 'javascript:window.close()'}
<a href={$link}>checked</a>
<a href={$link|nocheck}>unchecked</a>
Imprime:
<a href="">checked</a>
<a href="javascript:window.close()">unchecked</a>
Vea también checkUrl.
noescape
Desactiva el escapado automático.
{var $trustedHtmlString = '<b>hello</b>'}
Escaped: {$trustedHtmlString}
Unescaped: {$trustedHtmlString|noescape}
Imprime:
Escaped: <b>hello</b>
Unescaped: <b>hello</b>
¡Un uso indebido del filtro noescape puede provocar una vulnerabilidad XSS! No lo use nunca salvo
que esté absolutamente seguro de lo que hace y de que la cadena que imprime procede de una fuente confiable.
number (int $decimals=0, string
$decPoint='.', string $thousandsSep=',')
Da formato a un número con el número de decimales indicado. Si está definida la configuración regional, se usan los separadores decimales y de millares correspondientes.
{1234.20|number} {* 1,234 *}
{1234.20|number:1} {* 1,234.2 *}
{1234.20|number:2} {* 1,234.20 *}
{1234.20|number:2, ',', ' '} {* 1 234,20 *}
number (string $format)
El parámetro format le permite definir el aspecto de los números exactamente según sus necesidades. Para ello
es necesario que esté definida la configuración
regional. El formato consta de varios caracteres especiales, cuya descripción completa encontrará en la documentación de DecimalFormat:
0dígito obligatorio, se muestra siempre aunque sea cero#dígito opcional, se muestra solo si el número tiene realmente un dígito en ese lugar@dígito significativo, ayuda a mostrar el número con cierto número de dígitos significativos.indica dónde debe ir el separador decimal (punto o coma, según el país),sirve para separar grupos de dígitos, casi siempre los millares%multiplica el número por 100 y añade el signo de porcentaje
Veamos algunos ejemplos. En el primero, los dos decimales son obligatorios; en el segundo, opcionales. El tercer ejemplo muestra el relleno con ceros por la izquierda y por la derecha; el cuarto muestra solo los dígitos existentes:
{1234.5|number: '#,##0.00'} {* 1,234.50 *}
{1234.5|number: '#,##0.##'} {* 1,234.5 *}
{1.23 |number: '000.000'} {* 001.230 *}
{1.2 |number: '##.##'} {* 1.2 *}
Los dígitos significativos determinan cuántos dígitos, con independencia de la coma decimal, deben mostrarse, redondeando si hace falta:
{1234|number: '@@'} {* 1200 *}
{1234|number: '@@@'} {* 1230 *}
{1234|number: '@@@#'} {* 1234 *}
{1.2345|number: '@@@'} {* 1.23 *}
{0.00123|number: '@@'} {* 0.0012 *}
Una forma fácil de mostrar un número como porcentaje. El número se multiplica por 100 y se añade el signo
%:
{0.1234|number: '#.##%'} {* 12.34% *}
Podemos definir un formato distinto para los números positivos y los negativos, separados por el carácter ;.
Así, por ejemplo, los números positivos pueden mostrarse con el signo +:
{42|number: '#.##;(#.##)'} {* 42 *}
{-42|number: '#.##;(#.##)'} {* (42) *}
{42|number: '+#.##;-#.##'} {* +42 *}
{-42|number: '+#.##;-#.##'} {* -42 *}
Recuerde que el aspecto real de los números puede variar según la configuración del país. Por ejemplo, en algunos países se usa una coma en lugar de un punto como separador decimal. Este filtro lo tiene en cuenta automáticamente, así que no tiene que preocuparse por ello.
padLeft (int $length, string
$append=' ')
Rellena una cadena o un número hasta cierta longitud con otra cadena por la izquierda.
{='hello'|padLeft: 10, '123'} {* muestra '12312hello' *}
{=123|padLeft: 5, '0'} {* muestra '00123' *}
padRight (int $length, string
$append=' ')
Rellena una cadena o un número hasta cierta longitud con otra cadena por la derecha.
{='hello'|padRight: 10, '123'} {* muestra 'hello12312' *}
{=123|padRight: 5, '0'} {* muestra '12300' *}
query
Genera dinámicamente una query string en una URL:
<a href="http://example.com/?{[name: 'John Doe', age: 43]|query}">click</a>
<a href="http://example.com/?search={$search|query}">search</a>
Imprime:
<a href="http://example.com/?name=John+Doe&age=43">click</a>
<a href="http://example.com/?search=Foo+Bar">search</a>
Las claves con valor null se omiten.
Vea también escapeUrl.
random
Devuelve un elemento aleatorio de un array o un carácter aleatorio de una cadena:
{=[1, 2, 3, 4]|random} {* muestra p. ej.: 3 *}
{='abcd'|random} {* muestra p. ej.: 'b' *}
repeat (int $count)
Repite la cadena x veces.
{='hello'|repeat: 3} {* muestra 'hellohellohello' *}
replace (string|array $search, string|array
$replace='')
Sustituye todas las apariciones de la cadena buscada por la cadena de sustitución.
{='hello world'|replace: 'world', 'friend'} {* muestra 'hello friend' *}
Se pueden hacer varias sustituciones a la vez:
{='hello world'|replace: [h => l, l => h]} {* muestra 'lehho worhd' *}
replaceRE (string $pattern, string
$replacement='')
Realiza una búsqueda y sustitución con una expresión regular.
{='hello world'|replaceRE: '/l.*/', 'l'} {* muestra 'hel' *}
reverse (bool $preserveKeys=false)
Invierte la cadena o el array indicados.
{var $s = 'Nette'}
{$s|reverse} {* muestra 'etteN' *}
{var $a = ['N', 'e', 't', 't', 'e']}
{$a|reverse} {* devuelve ['e', 't', 't', 'e', 'N'] *}
round (int $precision=0)
Redondea un número con la precisión indicada.
{=3.4|round} {* muestra 3 *}
{=3.5|round} {* muestra 4 *}
{=135.79|round:1} {* muestra 135.8 *}
{=135.79|round:3} {* muestra 135.79 *}
slice (int $start, ?int $length=null, bool $preserveKeys=false)
Extrae una porción de un array, una cadena o un iterador.
{='hello'|slice: 1, 2} {* muestra 'el' *}
{=['a', 'b', 'c']|slice: 1, 2} {* muestra ['b', 'c'] *}
El filtro funciona como la función de PHP array_slice para los arrays o mb_substr para las cadenas.
Para los iteradores devuelve un generador: los elementos se consumen del origen uno a uno y la lectura se detiene al alcanzar el
límite. El iterador entero nunca se carga en memoria.
Si start es no negativo, la secuencia empezará en ese desplazamiento desde el principio del array o la cadena.
Si start es negativo, la secuencia empezará a esa distancia del final.
Si se indica length y es positivo, la secuencia tendrá como máximo ese número de elementos. Si la entrada es
más corta que length, solo estarán los elementos disponibles. Si se indica length y es negativo, la
secuencia se detendrá a ese número de elementos del final de la entrada. Si se omite, la secuencia contendrá todo desde
start hasta el final de la entrada.
De forma predeterminada, el filtro reordena y reinicia las claves enteras del array. Este comportamiento se puede cambiar
poniendo preserveKeys a true. Las claves de tipo cadena se conservan siempre, con independencia de este
parámetro.
Vea también limit.
limit (int $length)
Limita la longitud de un array, una cadena o un iterador. En arrays e iteradores se conservan las claves. En las cadenas respeta UTF-8.
{foreach ($items|limit: 5) as $item}
...
{/foreach}
{$text|limit: 100}
sort (?Closure $comparison=null, string|int|\Closure|null $by=null, string|int|\Closure|bool $byKey=false)
El filtro ordena los elementos de un array o un iterador conservando sus claves asociativas. Cuando hay una configuración regional definida, la ordenación sigue sus reglas, salvo que se indique una función de comparación propia.
{foreach ($names|sort) as $name}
...
{/foreach}
Array ordenado en orden inverso:
{foreach ($names|sort|reverse) as $name}
...
{/foreach}
Puede indicar una función de comparación propia para la ordenación (el ejemplo muestra cómo invertir el orden de mayor a menor):
{var $reverted = ($names|sort: fn($a, $b) => $b <=> $a)}
El filtro |sort permite también ordenar los elementos por las claves:
{foreach ($names|sort: byKey: true) as $name}
...
{/foreach}
Si necesita ordenar una tabla por una columna concreta, puede usar el parámetro by. El valor 'name'
del ejemplo indica que la ordenación se hará por $item->name o $item['name'], según
$item sea un array o un objeto:
{foreach ($items|sort: by: 'name') as $item}
{$item->name}
{/foreach}
También puede definir una función callback que determine el valor por el que ordenar:
{foreach ($items|sort: by: fn($item) => $item->category->name) as $item}
{$item->name}
{/foreach}
El parámetro byKey se puede usar del mismo modo.
spaceless
Elimina los espacios en blanco innecesarios de la salida. También puede usar el alias obsoleto strip, pero se
prefiere spaceless.
{block |spaceless}
<ul>
<li>Hello</li>
</ul>
{/block}
Imprime:
<ul><li>Hello</li></ul>
stripHtml
Convierte HTML en texto plano. Es decir, elimina las etiquetas HTML y convierte las entidades HTML en caracteres de texto.
{='<p>one < two</p>'|stripHtml} {* muestra 'one < two' *}
El texto plano resultante puede contener, naturalmente, caracteres que representan etiquetas HTML; por ejemplo,
'<p>'|stripHtml se convierte en <p>. Nunca imprima el texto resultante con
|noescape, porque puede provocar una vulnerabilidad de seguridad.
substr (int $start, ?int $length=null)
Extrae una parte de una cadena. Este filtro ha sido sustituido por el filtro slice.
{$string|substr: 1, 2}
toggle
El filtro toggle controla la presencia de un atributo según un valor booleano. Si el valor es verdadero, el
atributo está presente; si es falso, el atributo se omite por completo:
<div uk-grid={$isGrid|toggle}>
{* Si $isGrid es truthy: <div uk-grid> *}
{* Si $isGrid es falsy: <div> *}
Este filtro resulta útil para atributos propios o de bibliotecas JavaScript que requieren un control de presencia o ausencia parecido al de los atributos booleanos de HTML.
El filtro solo se puede usar dentro de atributos HTML.
translate (…$args)
Traduce expresiones a otros idiomas. Para que el filtro esté disponible, necesita configurar el traductor. También puede usar las etiquetas de traducción.
<a href="basket">{='Basket'|translate}</a>
<span>{$item|translate}</span>
trim (string
$charlist=" \t\n\r\0\x0B\u{A0}")
Elimina los espacios en blanco (u otros caracteres) del principio y del final de una cadena.
{=' I like Latte. '|trim} {* muestra 'I like Latte.' *}
{=' I like Latte.'|trim: '.'} {* muestra ' I like Latte' *}
truncate (int $length, string
$append='…')
Acorta una cadena hasta la longitud máxima indicada, procurando conservar palabras enteras. Si la cadena se acorta, añade puntos suspensivos al final (se pueden cambiar con el segundo parámetro).
{var $title = 'Hello, how are you?'}
{$title|truncate:5} {* Hell… *}
{$title|truncate:17} {* Hello, how are… *}
{$title|truncate:30} {* Hello, how are you? *}
upper
Convierte una cadena a mayúsculas. Requiere la extensión mbstring de PHP.
{='latte'|upper} {* muestra 'LATTE' *}
Vea también capitalize, firstLower, firstUpper, lower.
webalize
Adapta una cadena UTF‑8 al formato usado en las URL.
Convierte a ASCII. Convierte los espacios en guiones. Elimina los caracteres que no son alfanuméricos, guiones bajos ni guiones. Convierte a minúsculas. Además, elimina los espacios en blanco del principio y del final.
{var $s = 'Our 10th product'}
{$s|webalize} {* muestra 'our-10th-product' *}
Requiere la biblioteca nette/utils.