Φίλτρα Latte
Στα templates, μπορούμε να χρησιμοποιήσουμε συναρτήσεις που βοηθούν στην τροποποίηση ή την επαναμορφοποίηση των δεδομένων στην τελική τους μορφή. Τις ονομάζουμε φίλτρα.
capitalize |
μικρά γράμματα, το πρώτο γράμμα σε κάθε λέξη κεφαλαίο |
firstUpper |
μετατρέπει το πρώτο γράμμα σε κεφαλαίο |
lower |
μετατρέπει σε μικρά γράμματα |
upper |
μετατρέπει σε κεφαλαία γράμματα |
escapeUrl |
κάνει escape μια παράμετρο σε ένα URL |
noescape |
εκτυπώνει μια μεταβλητή χωρίς escaping |
query |
δημιουργεί ένα query string σε ένα URL |
Επιπλέον, υπάρχουν φίλτρα escaping για HTML (escapeHtml
και
escapeHtmlComment
), XML (escapeXml
), JavaScript (escapeJs
), CSS (escapeCss
)
και iCalendar (escapeICal
), τα οποία το Latte χρησιμοποιεί από μόνο του χάρη
στο context-aware escaping και
δεν χρειάζεται να τα γράψετε.
checkUrl |
επεξεργάζεται μια διεύθυνση URL για επικίνδυνες εισόδους |
nocheck |
αποτρέπει την αυτόματη επεξεργασία μιας διεύθυνσης URL |
Τα attributes src
και href
του Latte ελέγχονται αυτόματα, οπότε
σχεδόν ποτέ δεν χρειάζεται να χρησιμοποιήσετε το φίλτρο checkUrl
.
Όλα τα προεπιλεγμένα φίλτρα προορίζονται για strings στην κωδικοποίηση UTF-8.
Χρήση
Τα φίλτρα γράφονται μετά από μια κάθετη γραμμή (μπορεί να υπάρχει κενό πριν από αυτήν):
<h1>{$heading|upper}</h1>
Τα φίλτρα (σε παλαιότερες εκδόσεις helpers) μπορούν να συνδεθούν αλυσιδωτά και στη συνέχεια εφαρμόζονται με σειρά από αριστερά προς τα δεξιά:
<h1>{$heading|lower|capitalize}</h1>
Οι παράμετροι εισάγονται μετά το όνομα του φίλτρου, χωρισμένες με άνω και κάτω τελείες ή κόμματα:
<h1>{$heading|truncate:20,''}</h1>
Τα φίλτρα μπορούν επίσης να εφαρμοστούν σε μια έκφραση:
{var $name = ($title|upper) . ($subtitle|lower)}</h1>
Προσαρμοσμένα φίλτρα μπορούν να εγγραφούν με αυτόν τον τρόπο:
$latte = new Latte\Engine;
$latte->addFilter('shortify', fn(string $s, int $len = 10) => mb_substr($s, 0, $len));
Στο template, καλείται στη συνέχεια ως εξής:
<p>{$text|shortify}</p>
<p>{$text|shortify:100}</p>
Φίλτρα
batch (int $length, mixed $item): array
Ένα φίλτρο που απλοποιεί την εμφάνιση γραμμικών δεδομένων σε μορφή πίνακα. Επιστρέφει έναν πίνακα πινάκων με τον καθορισμένο αριθμό στοιχείων. Εάν καθορίσετε μια δεύτερη παράμετρο, θα χρησιμοποιηθεί για τη συμπλήρωση των στοιχείων που λείπουν στην τελευταία γραμμή.
{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>
Εκτυπώνει:
<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>
Δείτε επίσης group και το tag iterateWhile.
breakLines
Προσθέτει το HTML tag <br>
πριν από κάθε χαρακτήρα νέας
γραμμής.
{var $s = "Text & with \n newline"}
{$s|breakLines} {* εκτυπώνει "Text & with <br>\n newline" *}
bytes (int $precision=2)
Μορφοποιεί το μέγεθος σε bytes σε μια αναγνώσιμη από τον άνθρωπο μορφή. Εάν έχουν οριστεί οι τοπικές ρυθμίσεις, θα χρησιμοποιηθούν οι αντίστοιχοι διαχωριστές δεκαδικών και χιλιάδων.
{$size|bytes} 0 B, 1.25 GB, …
{$size|bytes:0} 10 B, 1 GB, …
ceil (int $precision=0)
Στρογγυλοποιεί έναν αριθμό προς τα πάνω στην καθορισμένη ακρίβεια.
{=3.4|ceil} {* εκτυπώνει 4 *}
{=135.22|ceil:1} {* εκτυπώνει 135.3 *}
{=135.22|ceil:3} {* εκτυπώνει 135.22 *}
capitalize
Οι λέξεις θα ξεκινούν με κεφαλαία γράμματα, όλοι οι υπόλοιποι
χαρακτήρες θα είναι μικρά. Απαιτεί την επέκταση PHP mbstring
.
{='i like LATTE'|capitalize} {* εκτυπώνει 'I Like Latte' *}
Δείτε επίσης firstUpper, lower, upper.
checkUrl
Επιβάλλει την επεξεργασία μιας διεύθυνσης URL. Ελέγχει εάν η μεταβλητή περιέχει μια διεύθυνση URL ιστού (δηλαδή πρωτόκολλο HTTP/HTTPS) και αποτρέπει την εμφάνιση συνδέσμων που ενδέχεται να αποτελούν κίνδυνο για την ασφάλεια.
{var $link = 'javascript:window.close()'}
<a data-href={$link|checkUrl}>ελεγχόμενο</a>
<a data-href={$link}>μη ελεγχόμενο</a>
Εκτυπώνει:
<a data-href="">ελεγχόμενο</a>
<a data-href="javascript:window.close()">μη ελεγχόμενο</a>
Δείτε επίσης nocheck.
clamp (int|float $min, int|float $max)
Περιορίζει την τιμή στο δεδομένο εύρος min και max (συμπεριλαμβανομένων).
{$level|clamp: 0, 255}
Υπάρχει επίσης ως συνάρτηση.
dataStream (string $mimetype=detect)
Μετατρέπει το περιεχόμενο στο data URI scheme. Με αυτό, μπορείτε να ενσωματώσετε εικόνες σε HTML ή CSS χωρίς να χρειάζεται να συνδέσετε εξωτερικά αρχεία.
Ας έχουμε μια εικόνα στη μεταβλητή
$img = Image::fromFile('obrazek.gif')
, τότε
<img src={$img|dataStream}>
Εκτυπώνει για παράδειγμα:
<img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUA
AAAFCAYAAACNbyblAAAAHElEQVQI12P4//8/w38GIAXDIBKE0DHxgljNBAAO
9TXL0Y4OHwAAAABJRU5ErkJggg==">
Απαιτεί την επέκταση PHP fileinfo
.
date (string $format)
Μορφοποιεί την ημερομηνία και την ώρα σύμφωνα με τη μάσκα που
χρησιμοποιείται από τη συνάρτηση PHP date. Το φίλτρο
δέχεται την ημερομηνία σε μορφή UNIX timestamp, ως string ή ως αντικείμενο τύπου
DateTimeInterface
.
{$today|date:'j. n. Y'}
Δείτε επίσης localDate.
escapeUrl
Κάνει escape μια μεταβλητή για χρήση ως παράμετρο σε ένα URL.
<a href="http://example.com/{$name|escapeUrl}">{$name}</a>
Δείτε επίσης query.
explode (string
$separator=''
)
Χωρίζει ένα string σε έναν πίνακα με βάση έναν διαχωριστή. Ψευδώνυμο για
το split
.
{='one,two,three'|explode:','} {* επιστρέφει ['one', 'two', 'three'] *}
Εάν ο διαχωριστής είναι ένα κενό string (η προεπιλεγμένη τιμή), η είσοδος θα χωριστεί σε μεμονωμένους χαρακτήρες:
{='123'|explode} {* επιστρέφει ['1', '2', '3'] *}
Μπορείτε επίσης να χρησιμοποιήσετε το ψευδώνυμο split
:
{='1,2,3'|split:','} {* επιστρέφει ['1', '2', '3'] *}
Δείτε επίσης implode.
first
Επιστρέφει το πρώτο στοιχείο ενός πίνακα ή τον πρώτο χαρακτήρα ενός string:
{=[1, 2, 3, 4]|first} {* εκτυπώνει 1 *}
{='abcd'|first} {* εκτυπώνει 'a' *}
floor (int $precision=0)
Στρογγυλοποιεί έναν αριθμό προς τα κάτω στην καθορισμένη ακρίβεια.
{=3.5|floor} {* εκτυπώνει 3 *}
{=135.79|floor:1} {* εκτυπώνει 135.7 *}
{=135.79|floor:3} {* εκτυπώνει 135.79 *}
firstUpper
Μετατρέπει το πρώτο γράμμα σε κεφαλαίο. Απαιτεί την επέκταση PHP
mbstring
.
{='the latte'|firstUpper} {* εκτυπώνει 'The latte' *}
Δείτε επίσης capitalize, lower, upper.
group (string|int|\Closure $by): array
Το φίλτρο ομαδοποιεί δεδομένα με βάση διάφορα κριτήρια.
Σε αυτό το παράδειγμα, οι γραμμές στον πίνακα ομαδοποιούνται με βάση
τη στήλη categoryId
. Η έξοδος είναι ένας πίνακας πινάκων, όπου το
κλειδί είναι η τιμή στη στήλη categoryId
. Διαβάστε τον αναλυτικό οδηγό.
{foreach ($items|group: categoryId) as $categoryId => $categoryItems}
<ul>
{foreach $categoryItems as $item}
<li>{$item->name}</li>
{/foreach}
</ul>
{/foreach}
Δείτε επίσης batch, τη συνάρτηση group και το tag iterateWhile.
implode (string $glue=''
)
Επιστρέφει ένα string που είναι η συνένωση των στοιχείων μιας
ακολουθίας. Ψευδώνυμο για το join
.
{=[1, 2, 3]|implode} {* εκτυπώνει '123' *}
{=[1, 2, 3]|implode:'|'} {* εκτυπώνει '1|2|3' *}
Μπορείτε επίσης να χρησιμοποιήσετε το ψευδώνυμο join
:
{=[1, 2, 3]|join} {* εκτυπώνει '123' *}
indent (int $level=1, string
$char="\t"
)
Κάνει εσοχή στο κείμενο από τα αριστερά κατά τον καθορισμένο αριθμό tabs ή άλλων χαρακτήρων, τους οποίους μπορούμε να καθορίσουμε στο δεύτερο όρισμα. Οι κενές γραμμές δεν έχουν εσοχή.
<div>
{block |indent}
<p>Hello</p>
{/block}
</div>
Εκτυπώνει:
<div>
<p>Hello</p>
</div>
last
Επιστρέφει το τελευταίο στοιχείο ενός πίνακα ή τον τελευταίο χαρακτήρα ενός string:
{=[1, 2, 3, 4]|last} {* εκτυπώνει 4 *}
{='abcd'|last} {* εκτυπώνει 'd' *}
length
Επιστρέφει το μήκος ενός string ή ενός πίνακα.
- για strings, επιστρέφει το μήκος σε χαρακτήρες UTF-8
- για πίνακες, επιστρέφει τον αριθμό των στοιχείων
- για αντικείμενα που υλοποιούν τη διεπαφή Countable, χρησιμοποιεί την τιμή επιστροφής της μεθόδου count()
- για αντικείμενα που υλοποιούν τη διεπαφή IteratorAggregate, χρησιμοποιεί την τιμή επιστροφής της συνάρτησης iterator_count()
{if ($users|length) > 10}
...
{/if}
localDate (?string $format=null, ?string $date=null, ?string $time=null)
Μορφοποιεί την ημερομηνία και την ώρα σύμφωνα με τις τοπικές ρυθμίσεις, εξασφαλίζοντας
συνεπή και τοπικοποιημένη εμφάνιση των χρονικών δεδομένων σε διάφορες
γλώσσες και περιοχές. Το φίλτρο δέχεται την ημερομηνία ως UNIX timestamp, string
ή αντικείμενο τύπου DateTimeInterface
.
{$date|localDate} {* 15 Απριλίου 2024 *}
{$date|format: yM} {* 4/2024 *}
{$date|localDate: date: medium} {* 15/4/2024 *}
Εάν χρησιμοποιήσετε το φίλτρο χωρίς παραμέτρους, η ημερομηνία θα
εκτυπωθεί στο επίπεδο long
, δείτε παρακάτω.
α) χρήση μορφής
Η παράμετρος format
περιγράφει ποια χρονικά στοιχεία πρέπει να
εμφανιστούν. Χρησιμοποιεί γράμματα-κωδικούς για αυτά, ο αριθμός των
επαναλήψεων των οποίων επηρεάζει το πλάτος της εξόδου:
έτος | y / yy / yyyy |
2024 / 24 / 2024 |
μήνας | M / MM / MMM / MMMM |
8 / 08 / Αυγ / Αύγουστος |
ημέρα | d / dd / E / EEEE |
1 / 01 / Κυ / Κυριακή |
ώρα | j / H / h |
προτιμώμενο / 24ωρο / 12ωρο |
λεπτό | m / mm |
5 / 05 (2 ψηφία σε συνδυασμό με δευτερόλεπτα) |
δευτερόλεπτο | s / ss |
8 / 08 (2 ψηφία σε συνδυασμό με λεπτά) |
Η σειρά των κωδικών στη μορφή δεν έχει σημασία, καθώς η σειρά των
στοιχείων εκτυπώνεται σύμφωνα με τις συμβάσεις των τοπικών ρυθμίσεων.
Επομένως, η μορφή είναι ανεξάρτητη από αυτές. Για παράδειγμα, η μορφή
yyyyMMMMd
στο περιβάλλον en_US
εκτυπώνει April 15, 2024
, ενώ
στο περιβάλλον el_GR
εκτυπώνει 15 Απριλίου 2024
:
locale: | el_GR | en_US |
---|---|---|
format: 'dMy' |
10/8/2024 | 8/10/2024 |
format: 'yM' |
8/2024 | 8/2024 |
format: 'yyyyMMMM' |
Αύγουστος 2024 | August 2024 |
format: 'MMMM' |
Αύγουστος | August |
format: 'jm' |
5:22 μ.μ. | 5:22 PM |
format: 'Hm' |
17:22 | 17:22 |
format: 'hm' |
5:22 μ.μ. | 5:22 PM |
β) χρήση προκαθορισμένων στυλ
Οι παράμετροι date
και time
καθορίζουν πόσο λεπτομερώς
πρέπει να εκτυπωθούν η ημερομηνία και η ώρα. Μπορείτε να επιλέξετε από
διάφορα επίπεδα: full
, long
, medium
, short
. Μπορείτε
να εκτυπώσετε μόνο την ημερομηνία, μόνο την ώρα ή και τα δύο:
locale: | el_GR | en_US |
---|---|---|
date: short |
23/1/78 | 1/23/78 |
date: medium |
23 Ιαν 1978 | Jan 23, 1978 |
date: long |
23 Ιανουαρίου 1978 | January 23, 1978 |
date: full |
Δευτέρα, 23 Ιανουαρίου 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 π.μ. EET | 8:30:59 AM GMT+2 |
date: short, time: short |
23/1/78, 8:30 π.μ. | 1/23/78, 8:30 AM |
date: medium, time: short |
23 Ιαν 1978, 8:30 π.μ. | Jan 23, 1978, 8:30 AM |
date: long, time: short |
23 Ιανουαρίου 1978 στις 8:30 π.μ. | January 23, 1978 at 8:30 AM |
Για την ημερομηνία, μπορείτε επιπλέον να χρησιμοποιήσετε το πρόθεμα
relative-
(π.χ. relative-short
), το οποίο για ημερομηνίες κοντά στην
τρέχουσα εμφανίζει χθες
, σήμερα
ή αύριο
,
διαφορετικά εκτυπώνεται με τον τυπικό τρόπο.
{$date|localDate: date: relative-short} {* χθες *}
Δείτε επίσης date.
lower
Μετατρέπει ένα string σε μικρά γράμματα. Απαιτεί την επέκταση PHP
mbstring
.
{='LATTE'|lower} {* εκτυπώνει 'latte' *}
Δείτε επίσης capitalize, firstUpper, upper.
nocheck
Αποτρέπει την αυτόματη επεξεργασία μιας διεύθυνσης URL. Το Latte ελέγχει αυτόματα εάν η μεταβλητή περιέχει μια διεύθυνση URL ιστού (δηλαδή πρωτόκολλο HTTP/HTTPS) και αποτρέπει την εμφάνιση συνδέσμων που ενδέχεται να αποτελούν κίνδυνο για την ασφάλεια.
Εάν ο σύνδεσμος χρησιμοποιεί άλλο σχήμα, π.χ. javascript:
ή
data:
, και είστε σίγουροι για το περιεχόμενό του, μπορείτε να
απενεργοποιήσετε τον έλεγχο χρησιμοποιώντας το |nocheck
.
{var $link = 'javascript:window.close()'}
<a href={$link}>ελεγχόμενο</a>
<a href={$link|nocheck}>μη ελεγχόμενο</a>
Εκτυπώνει:
<a href="">ελεγχόμενο</a>
<a href="javascript:window.close()">μη ελεγχόμενο</a>
Δείτε επίσης checkUrl.
noescape
Απενεργοποιεί το αυτόματο escaping.
{var $trustedHtmlString = '<b>hello</b>'}
Με escape: {$trustedHtmlString}
Χωρίς escape: {$trustedHtmlString|noescape}
Εκτυπώνει:
Με escape: <b>hello</b>
Χωρίς escape: <b>hello</b>
Η λανθασμένη χρήση του φίλτρου noescape
μπορεί να
οδηγήσει σε ευπάθεια XSS! Ποτέ μην το χρησιμοποιείτε αν δεν είστε
απολύτως σίγουροι για το τι κάνετε και ότι το string που εκτυπώνεται
προέρχεται από αξιόπιστη πηγή.
number (int $decimals=0, string
$decPoint='.'
, string $thousandsSep=','
)
Μορφοποιεί έναν αριθμό σε έναν συγκεκριμένο αριθμό δεκαδικών ψηφίων. Εάν έχουν οριστεί οι τοπικές ρυθμίσεις, θα χρησιμοποιηθούν οι αντίστοιχοι διαχωριστές δεκαδικών και χιλιάδων.
{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)
Η παράμετρος format
σας επιτρέπει να ορίσετε την εμφάνιση των
αριθμών ακριβώς σύμφωνα με τις ανάγκες σας. Για αυτό, πρέπει να έχετε
ορίσει τις τοπικές ρυθμίσεις. Η μορφή
αποτελείται από διάφορους ειδικούς χαρακτήρες, η πλήρης περιγραφή των
οποίων βρίσκεται στην τεκμηρίωση DecimalFormat:
0
υποχρεωτικό ψηφίο, εμφανίζεται πάντα, ακόμα κι αν είναι μηδέν#
προαιρετικό ψηφίο, εμφανίζεται μόνο εάν υπάρχει πραγματικά αριθμός σε αυτή τη θέση@
σημαντικό ψηφίο, βοηθά στην εμφάνιση του αριθμού με έναν συγκεκριμένο αριθμό σημαντικών ψηφίων.
υποδεικνύει πού πρέπει να είναι η υποδιαστολή (ή τελεία, ανάλογα με τη χώρα),
χρησιμοποιείται για τον διαχωρισμό ομάδων ψηφίων, συνηθέστερα χιλιάδων%
πολλαπλασιάζει τον αριθμό επί 100× και προσθέτει το σύμβολο του ποσοστού
Ας δούμε μερικά παραδείγματα. Στο πρώτο παράδειγμα, δύο δεκαδικά ψηφία είναι υποχρεωτικά, στο δεύτερο προαιρετικά. Το τρίτο παράδειγμα δείχνει τη συμπλήρωση με μηδενικά από αριστερά και δεξιά, το τέταρτο εμφανίζει μόνο τα υπάρχοντα ψηφία:
{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 *}
Τα σημαντικά ψηφία καθορίζουν πόσα ψηφία, ανεξάρτητα από την υποδιαστολή, πρέπει να εμφανιστούν, με στρογγυλοποίηση:
{1234|number: '@@'} {* 1200 *}
{1234|number: '@@@'} {* 1230 *}
{1234|number: '@@@#'} {* 1234 *}
{1.2345|number: '@@@'} {* 1.23 *}
{0.00123|number: '@@'} {* 0.0012 *}
Ένας εύκολος τρόπος για να εμφανίσετε έναν αριθμό ως ποσοστό. Ο
αριθμός πολλαπλασιάζεται επί 100× και προστίθεται το σύμβολο %
:
{0.1234|number: '#.##%'} {* 12.34% *}
Μπορούμε να ορίσουμε διαφορετική μορφή για θετικούς και αρνητικούς
αριθμούς, χωρίζονται με το σύμβολο ;
. Με αυτόν τον τρόπο, για
παράδειγμα, μπορούμε να ορίσουμε ότι οι θετικοί αριθμοί πρέπει να
εμφανίζονται με το σύμβολο +
:
{42|number: '#.##;(#.##)'} {* 42 *}
{-42|number: '#.##;(#.##)'} {* (42) *}
{42|number: '+#.##;-#.##'} {* +42 *}
{-42|number: '+#.##;-#.##'} {* -42 *}
Να θυμάστε ότι η πραγματική εμφάνιση των αριθμών μπορεί να διαφέρει ανάλογα με τις ρυθμίσεις της χώρας. Για παράδειγμα, σε ορισμένες χώρες χρησιμοποιείται κόμμα αντί για τελεία ως διαχωριστής δεκαδικών. Αυτό το φίλτρο το λαμβάνει αυτόματα υπόψη και δεν χρειάζεται να ανησυχείτε για τίποτα.
padLeft (int $length, string
$pad=' '
)
Συμπληρώνει ένα string σε ένα συγκεκριμένο μήκος με ένα άλλο string από τα αριστερά.
{='hello'|padLeft: 10, '123'} {* εκτυπώνει '12312hello' *}
padRight (int $length, string
$pad=' '
)
Συμπληρώνει ένα string σε ένα συγκεκριμένο μήκος με ένα άλλο string από τα δεξιά.
{='hello'|padRight: 10, '123'} {* εκτυπώνει 'hello12312' *}
query
Δημιουργεί δυναμικά ένα query string σε ένα URL:
<a href="http://example.com/?{[name: 'John Doe', age: 43]|query}">click</a>
<a href="http://example.com/?search={$search|query}">search</a>
Εκτυπώνει:
<a href="http://example.com/?name=John+Doe&age=43">click</a>
<a href="http://example.com/?search=Foo+Bar">search</a>
Τα κλειδιά με τιμή null
παραλείπονται.
Δείτε επίσης escapeUrl.
random
Επιστρέφει ένα τυχαίο στοιχείο ενός πίνακα ή έναν τυχαίο χαρακτήρα ενός string:
{=[1, 2, 3, 4]|random} {* εκτυπώνει π.χ.: 3 *}
{='abcd'|random} {* εκτυπώνει π.χ.: 'b' *}
repeat (int $count)
Επαναλαμβάνει ένα string x φορές.
{='hello'|repeat: 3} {* εκτυπώνει 'hellohellohello' *}
replace (string|array $search, string
$replace=''
)
Αντικαθιστά όλες τις εμφανίσεις του string αναζήτησης με το string αντικατάστασης.
{='hello world'|replace: 'world', 'friend'} {* εκτυπώνει 'hello friend' *}
Μπορούν να γίνουν και πολλαπλές αντικαταστάσεις ταυτόχρονα:
{='hello world'|replace: [h => l, l => h]} {* εκτυπώνει 'lehho worhd' *}
replaceRE (string $pattern, string
$replace=''
)
Εκτελεί αναζήτηση με regular expressions με αντικατάσταση.
{='hello world'|replaceRE: '/l.*/', 'l'} {* εκτυπώνει 'hel' *}
reverse
Αντιστρέφει το δεδομένο string ή πίνακα.
{var $s = 'Nette'}
{$s|reverse} {* εκτυπώνει 'etteN' *}
{var $a = ['N', 'e', 't', 't', 'e']}
{$a|reverse} {* επιστρέφει ['e', 't', 't', 'e', 'N'] *}
round (int $precision=0)
Στρογγυλοποιεί έναν αριθμό στην καθορισμένη ακρίβεια.
{=3.4|round} {* εκτυπώνει 3 *}
{=3.5|round} {* εκτυπώνει 4 *}
{=135.79|round:1} {* εκτυπώνει 135.8 *}
{=135.79|round:3} {* εκτυπώνει 135.79 *}
slice (int $start, ?int $length=null, bool $preserveKeys=false)
Εξάγει ένα τμήμα ενός πίνακα ή ενός string.
{='hello'|slice: 1, 2} {* εκτυπώνει 'el' *}
{=['a', 'b', 'c']|slice: 1, 2} {* εκτυπώνει ['b', 'c'] *}
Το φίλτρο λειτουργεί όπως η συνάρτηση PHP array_slice
για πίνακες ή
mb_substr
για strings με εναλλακτική λύση τη συνάρτηση iconv_substr
σε
λειτουργία UTF-8.
Εάν η αρχή είναι θετική, η ακολουθία θα ξεκινήσει μετατοπισμένη κατά αυτόν τον αριθμό από την αρχή του πίνακα/string. Εάν είναι αρνητική, η ακολουθία θα ξεκινήσει μετατοπισμένη κατά τόσο από το τέλος.
Εάν η παράμετρος length καθοριστεί και είναι θετική, η ακολουθία θα περιέχει τόσα στοιχεία. Εάν σε αυτή τη συνάρτηση περάσει μια αρνητική παράμετρος length, η ακολουθία θα περιέχει όλα τα στοιχεία του αρχικού πίνακα, ξεκινώντας από τη θέση start και τελειώνοντας στη θέση μικρότερη κατά length στοιχεία από το τέλος του πίνακα. Εάν δεν καθορίσετε αυτήν την παράμετρο, η ακολουθία θα περιέχει όλα τα στοιχεία του αρχικού πίνακα, ξεκινώντας από τη θέση start.
Από προεπιλογή, το φίλτρο αλλάζει τη σειρά και επαναφέρει τα ακέραια κλειδιά του πίνακα. Αυτή η συμπεριφορά μπορεί να αλλάξει ορίζοντας το preserveKeys σε true. Τα κλειδιά string διατηρούνται πάντα, ανεξάρτητα από αυτήν την παράμετρο.
sort (?Closure $comparison, string|int|\Closure|null $by=null, string|int|\Closure|bool $byKey=false)
Το φίλτρο ταξινομεί τα στοιχεία ενός πίνακα ή ενός iterator και διατηρεί τα συσχετιστικά τους κλειδιά. Όταν ορίζονται οι τοπικές ρυθμίσεις, η ταξινόμηση διέπεται από τους κανόνες της, εκτός εάν καθοριστεί μια προσαρμοσμένη συνάρτηση σύγκρισης.
{foreach ($names|sort) as $name}
...
{/foreach}
Ταξινομημένος πίνακας με αντίστροφη σειρά:
{foreach ($names|sort|reverse) as $name}
...
{/foreach}
Μπορείτε να καθορίσετε μια προσαρμοσμένη συνάρτηση σύγκρισης για ταξινόμηση (το παράδειγμα δείχνει πώς να αντιστρέψετε την ταξινόμηση από το μεγαλύτερο στο μικρότερο):
{var $reverted = ($names|sort: fn($a, $b) => $b <=> $a)}
Το φίλτρο |sort
επιτρέπει επίσης την ταξινόμηση στοιχείων με
βάση τα κλειδιά:
{foreach ($names|sort: byKey: true) as $name}
...
{/foreach}
Εάν πρέπει να ταξινομήσετε έναν πίνακα με βάση μια συγκεκριμένη
στήλη, μπορείτε να χρησιμοποιήσετε την παράμετρο by
. Η τιμή
'name'
στο παράδειγμα καθορίζει ότι η ταξινόμηση θα γίνει με βάση
το $item->name
ή το $item['name']
, ανάλογα με το αν το $item
είναι πίνακας ή αντικείμενο:
{foreach ($items|sort: by: 'name') as $item}
{$item->name}
{/foreach}
Μπορείτε επίσης να ορίσετε μια συνάρτηση callback που καθορίζει την τιμή με βάση την οποία θα γίνει η ταξινόμηση:
{foreach ($items|sort: by: fn($items) => $items->category->name) as $item}
{$item->name}
{/foreach}
Με τον ίδιο τρόπο μπορεί να χρησιμοποιηθεί και η παράμετρος
byKey
.
spaceless
Αφαιρεί το περιττό λευκό διάστημα (κενά) από την έξοδο. Μπορείτε
επίσης να χρησιμοποιήσετε το ψευδώνυμο strip
.
{block |spaceless}
<ul>
<li>Hello</li>
</ul>
{/block}
Εκτυπώνει:
<ul> <li>Hello</li> </ul>
stripHtml
Μετατρέπει το HTML σε απλό κείμενο. Δηλαδή, αφαιρεί τα HTML tags και μετατρέπει τις οντότητες HTML σε κείμενο.
{='<p>one < two</p>'|stripHtml} {* εκτυπώνει 'one < two' *}
Το προκύπτον απλό κείμενο μπορεί φυσικά να περιέχει χαρακτήρες που
αντιπροσωπεύουν HTML tags, για παράδειγμα, το '<p>'|stripHtml
μετατρέπεται σε <p>
. Σε καμία περίπτωση μην εκτυπώνετε το
κείμενο που προκύπτει με αυτόν τον τρόπο με |noescape
, καθώς αυτό
μπορεί να οδηγήσει σε κενό ασφαλείας.
substr (int $offset, ?int $length=null)
Εξάγει ένα τμήμα ενός string. Αυτό το φίλτρο έχει αντικατασταθεί από το φίλτρο slice.
{$string|substr: 1, 2}
translate (…$args)
Μεταφράζει εκφράσεις σε άλλες γλώσσες. Για να είναι διαθέσιμο το φίλτρο, πρέπει να ρυθμίσετε τον μεταφραστή. Μπορείτε επίσης να χρησιμοποιήσετε tags για μετάφραση.
<a href="basket">{='Καλάθι'|translate}</a>
<span>{$item|translate}</span>
trim (string
$charlist=" \t\n\r\0\x0B\u{A0}"
)
Αφαιρεί τους κενούς χαρακτήρες (ή άλλους χαρακτήρες) από την αρχή και το τέλος ενός string.
{=' I like Latte. '|trim} {* εκτυπώνει 'I like Latte.' *}
{=' I like Latte.'|trim: '.'} {* εκτυπώνει ' I like Latte' *}
truncate (int $length, string
$append='…'
)
Περικόπτει ένα string στο καθορισμένο μέγιστο μήκος, προσπαθώντας να διατηρήσει ολόκληρες λέξεις. Εάν το string περικοπεί, προσθέτει στο τέλος τρεις τελείες (μπορεί να αλλάξει με τη δεύτερη παράμετρο).
{var $title = 'Hello, how are you?'}
{$title|truncate:5} {* Hell… *}
{$title|truncate:17} {* Hello, how are… *}
{$title|truncate:30} {* Hello, how are you? *}
upper
Μετατρέπει ένα string σε κεφαλαία γράμματα. Απαιτεί την επέκταση PHP
mbstring
.
{='latte'|upper} {* εκτυπώνει 'LATTE' *}
Δείτε επίσης capitalize, firstUpper, lower.
webalize
Τροποποιεί ένα UTF-8 string στη μορφή που χρησιμοποιείται στα URL.
Μετατρέπεται σε ASCII. Μετατρέπει τα κενά σε παύλες. Αφαιρεί χαρακτήρες που δεν είναι αλφαριθμητικοί, κάτω παύλες ή παύλες. Μετατρέπει σε μικρά γράμματα. Επίσης, αφαιρεί τα αρχικά και τελικά κενά.
{var $s = 'Το 10ο προϊόν μας'}
{$s|webalize} {* εκτυπώνει 'to-10o-proion-mas' *}
Απαιτεί τη βιβλιοθήκη nette/utils.