Φίλτρα Latte

Στα templates, μπορούμε να χρησιμοποιήσουμε συναρτήσεις που βοηθούν στην τροποποίηση ή την επαναμορφοποίηση των δεδομένων στην τελική τους μορφή. Τις ονομάζουμε φίλτρα.

Μετασχηματισμός
batch εμφάνιση γραμμικών δεδομένων σε πίνακα
breakLines Προσθέτει αλλαγή γραμμής HTML πριν από το τέλος της γραμμής
bytes μορφοποιεί το μέγεθος σε bytes
clamp περιορίζει την τιμή σε ένα δεδομένο εύρος
dataStream μετατροπή για το πρωτόκολλο Data URI
date μορφοποιεί την ημερομηνία και την ώρα
explode χωρίζει ένα string σε έναν πίνακα με βάση έναν διαχωριστή
first επιστρέφει το πρώτο στοιχείο ενός πίνακα ή τον πρώτο χαρακτήρα ενός string
group ομαδοποιεί δεδομένα με βάση διάφορα κριτήρια
implode ενώνει έναν πίνακα σε ένα string
indent κάνει εσοχή στο κείμενο από τα αριστερά κατά έναν δεδομένο αριθμό tabs
join ενώνει έναν πίνακα σε ένα string
last επιστρέφει το τελευταίο στοιχείο ενός πίνακα ή τον τελευταίο χαρακτήρα ενός string
length επιστρέφει το μήκος ενός string σε χαρακτήρες ή ενός πίνακα
localDate μορφοποιεί την ημερομηνία και την ώρα σύμφωνα με τις τοπικές ρυθμίσεις
number μορφοποιεί έναν αριθμό
padLeft συμπληρώνει ένα string από τα αριστερά στο επιθυμητό μήκος
padRight συμπληρώνει ένα string από τα δεξιά στο επιθυμητό μήκος
random επιστρέφει ένα τυχαίο στοιχείο ενός πίνακα ή έναν τυχαίο χαρακτήρα ενός string
repeat επανάληψη ενός string
replace αντικαθιστά τις εμφανίσεις ενός string αναζήτησης
replaceRE αντικαθιστά τις εμφανίσεις σύμφωνα με μια regular expression
reverse αντιστρέφει ένα UTF-8 string ή έναν πίνακα
slice εξάγει ένα τμήμα ενός πίνακα ή ενός string
sort ταξινομεί έναν πίνακα
spaceless αφαιρεί το λευκό διάστημα, παρόμοια με το tag spaceless
split χωρίζει ένα string σε έναν πίνακα με βάση έναν διαχωριστή
strip αφαιρεί το λευκό διάστημα
stripHtml αφαιρεί τα HTML tags και μετατρέπει τις οντότητες HTML σε χαρακτήρες
substr επιστρέφει ένα τμήμα ενός string
trim αφαιρεί τα αρχικά και τελικά κενά ή άλλους χαρακτήρες
translate μετάφραση σε άλλες γλώσσες
truncate περικόπτει το μήκος διατηρώντας τις λέξεις
webalize τροποποιεί ένα UTF-8 string στη μορφή που χρησιμοποιείται στα URL
Κεφαλαία/Μικρά
capitalize μικρά γράμματα, το πρώτο γράμμα σε κάθε λέξη κεφαλαίο
firstUpper μετατρέπει το πρώτο γράμμα σε κεφαλαίο
lower μετατρέπει σε μικρά γράμματα
upper μετατρέπει σε κεφαλαία γράμματα
Στρογγυλοποίηση
ceil στρογγυλοποιεί έναν αριθμό προς τα πάνω στην καθορισμένη ακρίβεια
floor στρογγυλοποιεί έναν αριθμό προς τα κάτω στην καθορισμένη ακρίβεια
round στρογγυλοποιεί έναν αριθμό στην καθορισμένη ακρίβεια
Escaping
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 &amp; 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 *}

Δείτε επίσης floor, round.

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

Δείτε επίσης last, random.

floor (int $precision=0)

Στρογγυλοποιεί έναν αριθμό προς τα κάτω στην καθορισμένη ακρίβεια.

{=3.5|floor}        {* εκτυπώνει 3      *}
{=135.79|floor:1}   {* εκτυπώνει 135.7  *}
{=135.79|floor:3}   {* εκτυπώνει 135.79 *}

Δείτε επίσης ceil, round.

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

Δείτε επίσης first, random.

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 / MMMMMMM 8 / 08 / ΑυγΑύγουστος
ημέρα d / dd / EEEEE 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: &lt;b&gt;hello&lt;/b&gt;
Χωρίς 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&amp;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' *}

Δείτε επίσης first, last.

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

Δείτε επίσης ceil, floor.

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 &lt; two</p>'|stripHtml}  {* εκτυπώνει 'one < two' *}

Το προκύπτον απλό κείμενο μπορεί φυσικά να περιέχει χαρακτήρες που αντιπροσωπεύουν HTML tags, για παράδειγμα, το '&lt;p&gt;'|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.

έκδοση: 3.0