Latte-Filter

In Templates können wir Funktionen verwenden, die helfen, Daten in die endgültige Form zu ändern oder neu zu formatieren. Wir nennen sie Filter.

Transformation
batch Ausgabe linearer Daten in einer Tabelle
breakLines Fügt HTML-Zeilenumbrüche vor Zeilenenden ein
bytes formatiert die Größe in Bytes
clamp begrenzt einen Wert auf einen bestimmten Bereich
dataStream Konvertierung für das Data-URI-Protokoll
date formatiert Datum und Uhrzeit
explode teilt eine Zeichenkette anhand eines Trennzeichens in ein Array auf
first gibt das erste Element eines Arrays oder das erste Zeichen einer Zeichenkette zurück
group gruppiert Daten nach verschiedenen Kriterien
implode verbindet ein Array zu einer Zeichenkette
indent rückt Text von links um eine bestimmte Anzahl von Tabulatoren ein
join verbindet ein Array zu einer Zeichenkette
last gibt das letzte Element eines Arrays oder das letzte Zeichen einer Zeichenkette zurück
length gibt die Länge einer Zeichenkette in Zeichen oder eines Arrays zurück
localDate formatiert Datum und Uhrzeit gemäß der Spracheinstellung
number formatiert eine Zahl
padLeft füllt eine Zeichenkette von links auf die gewünschte Länge auf
padRight füllt eine Zeichenkette von rechts auf die gewünschte Länge auf
random gibt ein zufälliges Element eines Arrays oder ein zufälliges Zeichen einer Zeichenkette zurück
repeat Wiederholung einer Zeichenkette
replace ersetzt Vorkommen einer gesuchten Zeichenkette
replaceRE ersetzt Vorkommen gemäß einem regulären Ausdruck
reverse kehrt eine UTF-8-Zeichenkette oder ein Array um
slice extrahiert einen Teil eines Arrays oder einer Zeichenkette
sort sortiert ein Array
spaceless entfernt Leerzeichen, ähnlich wie der spaceless Tag
split teilt eine Zeichenkette anhand eines Trennzeichens in ein Array auf
strip entfernt Leerzeichen
stripHtml entfernt HTML-Tags und konvertiert HTML-Entitäten in Zeichen
substr gibt einen Teil einer Zeichenkette zurück
trim entfernt führende und nachfolgende Leerzeichen oder andere Zeichen
translate Übersetzung in andere Sprachen
truncate kürzt die Länge unter Beibehaltung von Wörtern
webalize wandelt eine UTF-8-Zeichenkette in eine in URLs verwendete Form um
Groß-/Kleinschreibung
capitalize Kleinbuchstaben, erster Buchstabe in Wörtern groß
firstUpper wandelt den ersten Buchstaben in einen Großbuchstaben um
lower wandelt in Kleinbuchstaben um
upper wandelt in Großbuchstaben um
Runden
ceil rundet eine Zahl auf die angegebene Genauigkeit auf
floor rundet eine Zahl auf die angegebene Genauigkeit ab
round rundet eine Zahl auf die angegebene Genauigkeit
Escaping
escapeUrl escapet einen Parameter in einer URL
noescape gibt eine Variable ohne Escaping aus
query generiert einen Query-String in einer URL

Darüber hinaus gibt es Escaping-Filter für HTML (escapeHtml und escapeHtmlComment), XML (escapeXml), JavaScript (escapeJs), CSS (escapeCss) und iCalendar (escapeICal), die Latte dank kontextsensitivem Escaping selbst verwendet und die Sie nicht schreiben müssen.

Sicherheit
checkUrl bereinigt eine URL-Adresse von gefährlichen Eingaben
nocheck verhindert die automatische Bereinigung einer URL-Adresse

Latte prüft die Attribute src und href automatisch, sodass Sie den Filter checkUrl fast nie verwenden müssen.

Alle Standardfilter sind für Zeichenketten in UTF-8-Kodierung vorgesehen.

Verwendung

Filter werden nach einem senkrechten Strich geschrieben (ein Leerzeichen davor ist erlaubt):

<h1>{$heading|upper}</h1>

Filter (in älteren Versionen Helfer) können verkettet werden und werden dann in der Reihenfolge von links nach rechts angewendet:

<h1>{$heading|lower|capitalize}</h1>

Parameter werden nach dem Filternamen, getrennt durch Doppelpunkte oder Kommas, angegeben:

<h1>{$heading|truncate:20,''}</h1>

Filter können auch auf einen Ausdruck angewendet werden:

{var $name = ($title|upper) . ($subtitle|lower)}</h1>

Benutzerdefinierte Filter können auf diese Weise registriert werden:

$latte = new Latte\Engine;
$latte->addFilter('shortify', fn(string $s, int $len = 10) => mb_substr($s, 0, $len));

Im Template wird er dann so aufgerufen:

<p>{$text|shortify}</p>
<p>{$text|shortify:100}</p>

Filter

batch (int $length, mixed $item)array

Ein Filter, der die Ausgabe linearer Daten in Tabellenform vereinfacht. Gibt ein Array von Arrays mit der angegebenen Anzahl von Elementen zurück. Wenn Sie einen zweiten Parameter angeben, wird dieser verwendet, um fehlende Elemente in der letzten Zeile zu ergänzen.

{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>

Gibt aus:

<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>

Siehe auch group und der Tag iterateWhile.

breakLines

Fügt vor jedem Zeilenumbruchzeichen das HTML-Tag <br> ein.

{var $s = "Text & with \n newline"}
{$s|breakLines}    {* gibt aus "Text &amp; with <br>\n newline" *}

bytes (int $precision=2)

Formatiert die Größe in Bytes in eine für Menschen lesbare Form. Wenn die Spracheinstellung gesetzt ist, werden die entsprechenden Dezimal- und Tausendertrennzeichen verwendet.

{$size|bytes}     0 B, 1.25 GB, …
{$size|bytes:0}   10 B, 1 GB, …

ceil (int $precision=0)

Rundet eine Zahl auf die angegebene Genauigkeit auf.

{=3.4|ceil}         {* gibt 4 aus      *}
{=135.22|ceil:1}    {* gibt 135.3 aus  *}
{=135.22|ceil:3}    {* gibt 135.22 aus *}

Siehe auch floor, round.

capitalize

Wörter beginnen mit Großbuchstaben, alle übrigen Zeichen sind Kleinbuchstaben. Erfordert die PHP-Erweiterung mbstring.

{='i like LATTE'|capitalize}  {* gibt 'I Like Latte' aus *}

Siehe auch firstUpper, lower, upper.

checkUrl

Erzwingt die Bereinigung einer URL-Adresse. Überprüft, ob die Variable eine Web-URL enthält (d. h. das HTTP/HTTPS-Protokoll) und verhindert die Ausgabe von Links, die ein Sicherheitsrisiko darstellen können.

{var $link = 'javascript:window.close()'}
<a data-href={$link|checkUrl}>kontrolliert</a>
<a data-href={$link}>unkontrolliert</a>

Gibt aus:

<a data-href="">kontrolliert</a>
<a data-href="javascript:window.close()">unkontrolliert</a>

Siehe auch nocheck.

clamp (int|float $min, int|float $max)

Begrenzt einen Wert auf den angegebenen inklusiven Bereich von min und max.

{$level|clamp: 0, 255}

Existiert auch als Funktion.

dataStream (string $mimetype=detect)

Konvertiert den Inhalt in das data URI scheme. Damit können Bilder in HTML oder CSS eingebettet werden, ohne externe Dateien verlinken zu müssen.

Nehmen wir an, wir haben ein Bild in der Variablen $img = Image::fromFile('bild.gif'), dann

<img src={$img|dataStream}>

Gibt beispielsweise aus:

<img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUA
AAAFCAYAAACNbyblAAAAHElEQVQI12P4//8/w38GIAXDIBKE0DHxgljNBAAO
9TXL0Y4OHwAAAABJRU5ErkJggg==">

Erfordert die PHP-Erweiterung fileinfo.

date (string $format)

Formatiert Datum und Uhrzeit gemäß der von der PHP-Funktion date verwendeten Maske. Der Filter akzeptiert das Datum im UNIX-Timestamp-Format, als Zeichenkette oder als Objekt vom Typ DateTimeInterface.

{$today|date:'j. n. Y'}

Siehe auch localDate.

escapeUrl

Escapet eine Variable zur Verwendung als Parameter in einer URL.

<a href="http://example.com/{$name|escapeUrl}">{$name}</a>

Siehe auch query.

explode (string $separator='')

Teilt eine Zeichenkette anhand eines Trennzeichens in ein Array auf. Alias für split.

{='one,two,three'|explode:','}    {* gibt ['one', 'two', 'three'] zurück *}

Wenn das Trennzeichen eine leere Zeichenkette ist (Standardwert), wird die Eingabe in einzelne Zeichen aufgeteilt:

{='123'|explode}                  {* gibt ['1', '2', '3'] zurück *}

Sie können auch den Alias split verwenden:

{='1,2,3'|split:','}              {* gibt ['1', '2', '3'] zurück *}

Siehe auch implode.

first

Gibt das erste Element eines Arrays oder das erste Zeichen einer Zeichenkette zurück:

{=[1, 2, 3, 4]|first}    {* gibt 1 aus *}
{='abcd'|first}          {* gibt 'a' aus *}

Siehe auch last, random.

floor (int $precision=0)

Rundet eine Zahl auf die angegebene Genauigkeit ab.

{=3.5|floor}        {* gibt 3 aus      *}
{=135.79|floor:1}   {* gibt 135.7 aus  *}
{=135.79|floor:3}   {* gibt 135.79 aus *}

Siehe auch ceil, round.

firstUpper

Wandelt den ersten Buchstaben in einen Großbuchstaben um. Erfordert die PHP-Erweiterung mbstring.

{='the latte'|firstUpper}  {* gibt 'The latte' aus *}

Siehe auch capitalize, lower, upper.

group (string|int|\Closure $by)array

Der Filter gruppiert Daten nach verschiedenen Kriterien.

In diesem Beispiel werden die Zeilen in der Tabelle nach der Spalte categoryId gruppiert. Die Ausgabe ist ein Array von Arrays, wobei der Schlüssel der Wert in der Spalte categoryId ist. Lesen Sie die detaillierte Anleitung.

{foreach ($items|group: categoryId) as $categoryId => $categoryItems}
    <ul>
        {foreach $categoryItems as $item}
            <li>{$item->name}</li>
        {/foreach}
    </ul>
{/foreach}

Siehe auch batch, Funktion group und Tag iterateWhile.

implode (string $glue='')

Gibt eine Zeichenkette zurück, die die Verkettung der Elemente einer Sequenz ist. Alias für join.

{=[1, 2, 3]|implode}      {* gibt '123' aus *}
{=[1, 2, 3]|implode:'|'}  {* gibt '1|2|3' aus *}

Sie können auch den Alias join verwenden:

{=[1, 2, 3]|join}         {* gibt '123' aus *}

indent (int $level=1, string $char="\t")

Rückt Text von links um die angegebene Anzahl von Tabulatoren oder anderen Zeichen ein, die im zweiten Argument angegeben werden können. Leere Zeilen werden nicht eingerückt.

<div>
{block |indent}
<p>Hello</p>
{/block}
</div>

Gibt aus:

<div>
	<p>Hello</p>
</div>

last

Gibt das letzte Element eines Arrays oder das letzte Zeichen einer Zeichenkette zurück:

{=[1, 2, 3, 4]|last}    {* gibt 4 aus *}
{='abcd'|last}          {* gibt 'd' aus *}

Siehe auch first, random.

length

Gibt die Länge einer Zeichenkette oder eines Arrays zurück.

  • für Zeichenketten gibt die Länge in UTF-8-Zeichen zurück
  • für Arrays gibt die Anzahl der Elemente zurück
  • für Objekte, die das Interface Countable implementieren, verwendet den Rückgabewert der Methode count()
  • für Objekte, die das Interface IteratorAggregate implementieren, verwendet den Rückgabewert der Funktion iterator_count()
{if ($users|length) > 10}
	...
{/if}

localDate (?string $format=null, ?string $date=null, ?string $time=null)

Formatiert Datum und Uhrzeit gemäß der Spracheinstellung, was eine konsistente und lokalisierte Anzeige von Zeitangaben über verschiedene Sprachen und Regionen hinweg gewährleistet. Der Filter akzeptiert das Datum als UNIX-Timestamp, Zeichenkette oder Objekt vom Typ DateTimeInterface.

{$date|localDate}                  {* 15. April 2024 *}
{$date|format: yM}                 {* 4/2024 *}
{$date|localDate: date: medium}    {* 15. 4. 2024 *}

Wenn Sie den Filter ohne Parameter verwenden, wird das Datum im long-Format ausgegeben, siehe unten.

a) Verwendung des Formats

Der Parameter format beschreibt, welche Zeitkomponenten angezeigt werden sollen. Er verwendet dafür Buchstabencodes, deren Wiederholungsanzahl die Breite der Ausgabe beeinflusst:

Jahr y / yy / yyyy 2024 / 24 / 2024
Monat M / MM / MMMMMMM 8 / 08 / AugAugust
Tag d / dd / EEEEE 1 / 01 / SoSonntag
Stunde j / H / h bevorzugt / 24-Stunden / 12-Stunden
Minute m / mm 5 / 05 (2 Ziffern in Kombination mit Sekunden)
Sekunde s / ss 8 / 08 (2 Ziffern in Kombination mit Minuten)

Die Reihenfolge der Codes im Format spielt keine Rolle, da die Reihenfolge der Komponenten gemäß den Gepflogenheiten der Spracheinstellung ausgegeben wird. Das Format ist also davon unabhängig. Zum Beispiel gibt das Format yyyyMMMMd in der Umgebung en_US April 15, 2024 aus, während es in der Umgebung de_DE 15. April 2024 ausgibt:

locale: de_DE en_US
format: 'dMy' 10. 8. 2024 8/10/2024
format: 'yM' 8/2024 8/2024
format: 'yyyyMMMM' August 2024 August 2024
format: 'MMMM' August August
format: 'jm' 17:22 5:22 PM
format: 'Hm' 17:22 17:22
format: 'hm' 5:22 nachm. 5:22 PM

b) Verwendung vordefinierter Stile

Die Parameter date und time bestimmen, wie detailliert Datum und Uhrzeit ausgegeben werden sollen. Sie können aus mehreren Stufen wählen: full, long, medium, short. Es kann nur das Datum, nur die Uhrzeit oder beides ausgegeben werden:

locale: de_DE en_US
date: short 23.01.78 1/23/78
date: medium 23.01.1978 Jan 23, 1978
date: long 23. Januar 1978 January 23, 1978
date: full Montag, 23. Januar 1978 Monday, January 23, 1978
time: short 08:30 8:30 AM
time: medium 08:30:59 8:30:59 AM
time: long 08:30:59 MEZ 8:30:59 AM GMT+1
date: short, time: short 23.01.78, 08:30 1/23/78, 8:30 AM
date: medium, time: short 23.01.1978, 08:30 Jan 23, 1978, 8:30 AM
date: long, time: short 23. Januar 1978 um 08:30 January 23, 1978 at 8:30 AM

Beim Datum kann zusätzlich das Präfix relative- verwendet werden (z. B. relative-short), das für Daten nahe der Gegenwart gestern, heute oder morgen anzeigt, ansonsten wird es standardmäßig ausgegeben.

{$date|localDate: date: relative-short}    {* gestern *}

Siehe auch date.

lower

Wandelt eine Zeichenkette in Kleinbuchstaben um. Erfordert die PHP-Erweiterung mbstring.

{='LATTE'|lower}   {* gibt 'latte' aus *}

Siehe auch capitalize, firstUpper, upper.

nocheck

Verhindert die automatische Bereinigung einer URL-Adresse. Latte prüft automatisch, ob die Variable eine Web-URL enthält (d. h. das HTTP/HTTPS-Protokoll) und verhindert die Ausgabe von Links, die ein Sicherheitsrisiko darstellen können.

Wenn der Link ein anderes Schema verwendet, z. B. javascript: oder data:, und Sie sich seines Inhalts sicher sind, können Sie die Überprüfung mit |nocheck deaktivieren.

{var $link = 'javascript:window.close()'}

<a href={$link}>kontrolliert</a>
<a href={$link|nocheck}>unkontrolliert</a>

Gibt aus:

<a href="">kontrolliert</a>
<a href="javascript:window.close()">unkontrolliert</a>

Siehe auch checkUrl.

noescape

Deaktiviert das automatische Escaping.

{var $trustedHtmlString = '<b>hello</b>'}
Escaped: {$trustedHtmlString}
Unescaped: {$trustedHtmlString|noescape}

Gibt aus:

Escaped: &lt;b&gt;hello&lt;/b&gt;
Unescaped: <b>hello</b>

Eine falsche Verwendung des noescape-Filters kann zu einer XSS-Schwachstelle führen! Verwenden Sie ihn niemals, wenn Sie nicht absolut sicher sind, was Sie tun, und dass die ausgegebene Zeichenkette aus einer vertrauenswürdigen Quelle stammt.

number (int $decimals=0, string $decPoint='.', string $thousandsSep=',')

Formatiert eine Zahl auf eine bestimmte Anzahl von Dezimalstellen. Wenn die Spracheinstellung gesetzt ist, werden die entsprechenden Dezimal- und Tausendertrennzeichen verwendet.

{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)

Der Parameter format ermöglicht es, das Erscheinungsbild von Zahlen genau nach Ihren Bedürfnissen zu definieren. Dazu muss die Spracheinstellung gesetzt sein. Das Format besteht aus mehreren Sonderzeichen, deren vollständige Beschreibung Sie in der Dokumentation DecimalFormat finden:

  • 0 obligatorische Ziffer, wird immer angezeigt, auch wenn es eine Null ist
  • # optionale Ziffer, wird nur angezeigt, wenn an dieser Stelle tatsächlich eine Zahl steht
  • @ signifikante Ziffer, hilft, eine Zahl mit einer bestimmten Anzahl von signifikanten Ziffern anzuzeigen
  • . gibt an, wo das Dezimaltrennzeichen (Komma oder Punkt, je nach Land) sein soll
  • , dient zur Trennung von Zifferngruppen, meist Tausender
  • % multipliziert die Zahl mit 100× und fügt das Prozentzeichen hinzu

Sehen wir uns einige Beispiele an. Im ersten Beispiel sind zwei Dezimalstellen obligatorisch, im zweiten optional. Das dritte Beispiel zeigt das Auffüllen mit Nullen von links und rechts, das vierte zeigt nur vorhandene Ziffern an:

{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 *}

Signifikante Ziffern bestimmen, wie viele Ziffern unabhängig vom Dezimaltrennzeichen angezeigt werden sollen, wobei gerundet wird:

{1234|number: '@@'}             {* 1200 *}
{1234|number: '@@@'}            {* 1230 *}
{1234|number: '@@@#'}           {* 1234 *}
{1.2345|number: '@@@'}          {* 1.23 *}
{0.00123|number: '@@'}          {* 0.0012 *}

Eine einfache Möglichkeit, eine Zahl als Prozentsatz anzuzeigen. Die Zahl wird mit 100× multipliziert und das Zeichen % hinzugefügt:

{0.1234|number: '#.##%'}        {* 12.34% *}

Wir können ein unterschiedliches Format für positive und negative Zahlen definieren, getrennt durch das Zeichen ;. Auf diese Weise kann beispielsweise festgelegt werden, dass positive Zahlen mit einem +-Zeichen angezeigt werden sollen:

{42|number: '#.##;(#.##)'}      {* 42 *}
{-42|number: '#.##;(#.##)'}     {* (42) *}
{42|number: '+#.##;-#.##'}      {* +42 *}
{-42|number: '+#.##;-#.##'}     {* -42 *}

Beachten Sie, dass das tatsächliche Erscheinungsbild von Zahlen je nach Ländereinstellung variieren kann. Beispielsweise wird in einigen Ländern ein Komma anstelle eines Punktes als Dezimaltrennzeichen verwendet. Dieser Filter berücksichtigt dies automatisch, und Sie müssen sich um nichts kümmern.

padLeft (int $length, string $pad=' ')

Füllt eine Zeichenkette auf eine bestimmte Länge mit einer anderen Zeichenkette von links auf.

{='hello'|padLeft: 10, '123'}  {* gibt '12312hello' aus *}

padRight (int $length, string $pad=' ')

Füllt eine Zeichenkette auf eine bestimmte Länge mit einer anderen Zeichenkette von rechts auf.

{='hello'|padRight: 10, '123'}  {* gibt 'hello12312' aus *}

query

Generiert dynamisch einen Query-String in einer URL:

<a href="http://example.com/?{[name: 'John Doe', age: 43]|query}">click</a>
<a href="http://example.com/?search={$search|query}">search</a>

Gibt aus:

<a href="http://example.com/?name=John+Doe&amp;age=43">click</a>
<a href="http://example.com/?search=Foo+Bar">search</a>

Schlüssel mit dem Wert null werden ausgelassen.

Siehe auch escapeUrl.

random

Gibt ein zufälliges Element eines Arrays oder ein zufälliges Zeichen einer Zeichenkette zurück:

{=[1, 2, 3, 4]|random}    {* gibt z.B. 3 aus *}
{='abcd'|random}          {* gibt z.B. 'b' aus *}

Siehe auch first, last.

repeat (int $count)

Wiederholt eine Zeichenkette x-mal.

{='hello'|repeat: 3}  {* gibt 'hellohellohello' aus *}

replace (string|array $search, string $replace='')

Ersetzt alle Vorkommen der Suchzeichenkette durch die Ersatzzeichenkette.

{='hello world'|replace: 'world', 'friend'}  {* gibt 'hello friend' aus *}

Es können auch mehrere Ersetzungen gleichzeitig durchgeführt werden:

{='hello world'|replace: [h => l, l => h]}  {* gibt 'lehho worhd' aus *}

replaceRE (string $pattern, string $replace='')

Führt eine Suche mit regulären Ausdrücken und Ersetzung durch.

{='hello world'|replaceRE: '/l.*/', 'l'}  {* gibt 'hel' aus *}

reverse

Kehrt die gegebene Zeichenkette oder das Array um.

{var $s = 'Nette'}
{$s|reverse}    {* gibt 'etteN' aus *}
{var $a = ['N', 'e', 't', 't', 'e']}
{$a|reverse}    {* gibt ['e', 't', 't', 'e', 'N'] zurück *}

round (int $precision=0)

Rundet eine Zahl auf die angegebene Genauigkeit.

{=3.4|round}        {* gibt 3 aus      *}
{=3.5|round}        {* gibt 4 aus      *}
{=135.79|round:1}   {* gibt 135.8 aus  *}
{=135.79|round:3}   {* gibt 135.79 aus *}

Siehe auch ceil, floor.

slice (int $start, ?int $length=null, bool $preserveKeys=false)

Extrahiert einen Teil eines Arrays oder einer Zeichenkette.

{='hello'|slice: 1, 2}           {* gibt 'el' aus *}
{=['a', 'b', 'c']|slice: 1, 2}   {* gibt ['b', 'c'] aus *}

Der Filter funktioniert wie die PHP-Funktion array_slice für Arrays oder mb_substr für Zeichenketten mit einem Fallback auf die Funktion iconv_substr im UTF-8-Modus.

Wenn start positiv ist, beginnt die Sequenz um diese Anzahl vom Anfang des Arrays/der Zeichenkette verschoben. Wenn es negativ ist, beginnt die Sequenz um so viel vom Ende verschoben.

Wenn der Parameter length angegeben ist und positiv ist, enthält die Sequenz so viele Elemente. Wenn dieser Funktion ein negativer Parameter length übergeben wird, enthält die Sequenz alle Elemente des ursprünglichen Arrays, beginnend bei der Position start und endend bei einer Position, die um length Elemente kleiner ist als das Ende des Arrays. Wenn Sie diesen Parameter nicht angeben, enthält die Sequenz alle Elemente des ursprünglichen Arrays, beginnend bei der Position start.

Standardmäßig ändert der Filter die Reihenfolge und setzt die Ganzzahl-Schlüssel des Arrays zurück. Dieses Verhalten kann durch Setzen von preserveKeys auf true geändert werden. Zeichenketten-Schlüssel bleiben immer erhalten, unabhängig von diesem Parameter.

sort (?Closure $comparison, string|int|\Closure|null $by=null, string|int|\Closure|bool $byKey=false)

Der Filter sortiert die Elemente eines Arrays oder Iterators und behält ihre assoziativen Schlüssel bei. Bei gesetzter Spracheinstellung richtet sich die Sortierung nach deren Regeln, sofern keine eigene Vergleichsfunktion angegeben ist.

{foreach ($names|sort) as $name}
	...
{/foreach}

Sortiertes Array in umgekehrter Reihenfolge:

{foreach ($names|sort|reverse) as $name}
	...
{/foreach}

Sie können eine eigene Vergleichsfunktion für die Sortierung angeben (das Beispiel zeigt, wie man die Sortierung von der größten zur kleinsten umkehrt):

{var $reverted = ($names|sort: fn($a, $b) => $b <=> $a)}

Der Filter |sort ermöglicht auch das Sortieren von Elementen nach Schlüsseln:

{foreach ($names|sort: byKey: true) as $name}
	...
{/foreach}

Wenn Sie eine Tabelle nach einer bestimmten Spalte sortieren müssen, können Sie den Parameter by verwenden. Der Wert 'name' im Beispiel gibt an, dass nach $item->name oder $item['name'] sortiert wird, je nachdem, ob $item ein Array oder ein Objekt ist:

{foreach ($items|sort: by: 'name') as $item}
	{$item->name}
{/foreach}

Sie können auch eine Callback-Funktion definieren, die den Wert bestimmt, nach dem sortiert werden soll:

{foreach ($items|sort: by: fn($items) => $items->category->name) as $item}
	{$item->name}
{/foreach}

Auf die gleiche Weise kann auch der Parameter byKey verwendet werden.

spaceless

Entfernt unnötige Leerzeichen aus der Ausgabe. Sie können auch den Alias strip verwenden.

{block |spaceless}
	<ul>
		<li>Hello</li>
	</ul>
{/block}

Gibt aus:

<ul> <li>Hello</li> </ul>

stripHtml

Konvertiert HTML in reinen Text. Das heißt, es entfernt HTML-Tags und konvertiert HTML-Entitäten in Text.

{='<p>one &lt; two</p>'|stripHtml}  {* gibt 'one < two' aus *}

Der resultierende reine Text kann natürlich Zeichen enthalten, die HTML-Tags darstellen, z. B. wird '&lt;p&gt;'|stripHtml in <p> konvertiert. Geben Sie solchen resultierenden Text keinesfalls mit |noescape aus, da dies zu einer Sicherheitslücke führen kann.

substr (int $offset, ?int $length=null)

Extrahiert einen Teil einer Zeichenkette. Dieser Filter wurde durch den Filter slice ersetzt.

{$string|substr: 1, 2}

translate (…$args)

Übersetzt Ausdrücke in andere Sprachen. Damit der Filter verfügbar ist, muss der Übersetzer eingestellt werden. Sie können auch Tags für die Übersetzung verwenden.

<a href="basket">{='Warenkorb'|translate}</a>
<span>{$item|translate}</span>

trim (string $charlist=" \t\n\r\0\x0B\u{A0}")

Entfernt Leerzeichen (oder andere Zeichen) vom Anfang und Ende einer Zeichenkette.

{='  I like Latte.  '|trim}    {* gibt 'I like Latte.' aus *}
{='  I like Latte.'|trim: '.'} {* gibt '  I like Latte' aus *}

truncate (int $length, string $append='…')

Kürzt eine Zeichenkette auf die angegebene maximale Länge und versucht dabei, ganze Wörter beizubehalten. Wenn die Zeichenkette gekürzt wird, wird am Ende ein Auslassungspunkt hinzugefügt (kann durch den zweiten Parameter geändert werden).

{var $title = 'Hello, how are you?'}
{$title|truncate:5}  {* Hell…                *}
{$title|truncate:17} {* Hello, how are…      *}
{$title|truncate:30} {* Hello, how are you?  *}

upper

Wandelt eine Zeichenkette in Großbuchstaben um. Erfordert die PHP-Erweiterung mbstring.

{='latte'|upper}  {* gibt 'LATTE' aus *}

Siehe auch capitalize, firstUpper, lower.

webalize

Wandelt eine UTF-8-Zeichenkette in die in URLs verwendete Form um.

Wird in ASCII konvertiert. Wandelt Leerzeichen in Bindestriche um. Entfernt Zeichen, die keine alphanumerischen Zeichen, Unterstriche oder Bindestriche sind. Wandelt in Kleinbuchstaben um. Entfernt auch führende und nachfolgende Leerzeichen.

{var $s = 'Unser 10. Produkt'}
{$s|webalize}   {* gibt 'unser-10-produkt' aus *}

Erfordert die Bibliothek nette/utils.

Version: 3.0