Φίλτρα Latte
Τα φίλτρα είναι συναρτήσεις που αλλάζουν ή μορφοποιούν τα δεδομένα σε μια μορφή που θέλουμε. Αυτή είναι μια περίληψη των ενσωματωμένων φίλτρων που είναι διαθέσιμα.
capitalize |
πεζά γράμματα, το πρώτο γράμμα κάθε λέξης κεφαλαίο |
firstUpper |
κάνει το πρώτο γράμμα κεφαλαίο |
lower |
κάνει μια συμβολοσειρά πεζά |
upper |
κάνει μια συμβολοσειρά κεφαλαίο |
ceil |
στρογγυλοποιεί έναν αριθμό με δεδομένη ακρίβεια |
floor |
στρογγυλοποιεί έναν αριθμό προς τα κάτω με δεδομένη ακρίβεια |
round |
στρογγυλοποιεί έναν αριθμό σε δεδομένη ακρίβεια |
escapeUrl |
αποφεύγει την παράμετρο στη διεύθυνση URL |
noescape |
εκτυπώνει μια μεταβλητή χωρίς διαφυγή |
query |
δημιουργεί μια συμβολοσειρά ερωτήματος στη διεύθυνση URL |
Υπάρχουν επίσης φίλτρα διαφυγής για HTML (escapeHtml
και
escapeHtmlComment
), XML (escapeXml
), JavaScript (escapeJs
), CSS (escapeCss
)
και iCalendar (escapeICal
), τα οποία το Latte χρησιμοποιεί το ίδιο χάρη στην διαφυγή με επίγνωση του
περιβάλλοντος και δεν χρειάζεται να τα γράψετε.
checkUrl |
Αποκαθαρίζει τη συμβολοσειρά για χρήση μέσα στο χαρακτηριστικό href. |
nocheck |
αποτρέπει την αυτόματη εξυγίανση URL |
Latte οι έλεγχοι των
χαρακτηριστικών src
και href
γίνονται αυτόματα, οπότε σχεδόν δεν
χρειάζεται να χρησιμοποιήσετε το φίλτρο checkUrl
.
Όλα τα ενσωματωμένα φίλτρα λειτουργούν με κωδικοποιημένες συμβολοσειρές UTF-8.
Χρήση
Το Latte επιτρέπει την κλήση φίλτρων με τη χρήση του συμβολισμού με το σύμβολο της πίπας (επιτρέπεται το κενό που προηγείται):
<h1>{$heading|upper}</h1>
Τα φίλτρα μπορούν να είναι αλυσιδωτά, οπότε εφαρμόζονται με τη σειρά από αριστερά προς τα δεξιά:
<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));
Τα χρησιμοποιούμε σε ένα πρότυπο όπως αυτό:
<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>
breakLines
Εισάγει διαλείμματα γραμμής HTML πριν από όλες τις νέες γραμμές.
{var $s = "Text & with \n newline"}
{$s|breakLines} {* outputs "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} {* outputs 'I Like Latte' *}
Βλέπε επίσης firstUpper, lower, upper.
checkUrl
Επιβάλλει την εξυγίανση URL. Ελέγχει αν η μεταβλητή περιέχει μια διεύθυνση URL στο διαδίκτυο (δηλαδή πρωτόκολλο HTTP/HTTPS) και αποτρέπει τη συγγραφή συνδέσμων που μπορεί να αποτελούν κίνδυνο για την ασφάλεια.
{var $link = 'javascript:window.close()'}
<a data-href="{$link|checkUrl}">checked</a>
<a data-href="{$link}">unchecked</a>
Εκτυπώνει:
<a data-href="">checked</a>
<a data-href="javascript:window.close()">unchecked</a>
Βλέπε επίσης nocheck.
clamp (int|float min, int|float max)
Επιστρέφει την τιμή που έχει περιοριστεί στο συνολικό εύρος των min και max.
{$level|clamp: 0, 255}
Υπάρχει επίσης ως συνάρτηση.
dataStream (string mimetype = detect)
Μετατρέπει το περιεχόμενο σε σχήμα URI δεδομένων. Μπορεί να χρησιμοποιηθεί για την εισαγωγή εικόνων σε 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 strftime ή date. Το φίλτρο λαμβάνει μια ημερομηνία ως
χρονοσφραγίδα UNIX, συμβολοσειρά ή αντικείμενο τύπου DateTime
.
{$today|date:'%d.%m.%Y'}
{$today|date:'j. n. Y'}
escapeUrl
Διασώζει μια μεταβλητή που θα χρησιμοποιηθεί ως παράμετρος σε URL.
<a href="http://example.com/{$name|escapeUrl}">{$name}</a>
Βλέπε επίσης query.
explode (string separator =
''
)
Διαχωρίζει μια συμβολοσειρά με βάση το δεδομένο διαχωριστικό και
επιστρέφει έναν πίνακα συμβολοσειρών. Ψευδώνυμο για το split
.
{='one,two,three'|explode:','} {* returns ['one', 'two', 'three'] *}
Εάν ο διαχωριστής είναι κενή συμβολοσειρά (προεπιλεγμένη τιμή), η είσοδος θα διαιρεθεί σε μεμονωμένους χαρακτήρες:
{='123'|explode} {* επιστρέφει ['1', '2', '3'] *}
Μπορείτε επίσης να χρησιμοποιήσετε το ψευδώνυμο split
:
{='1,2,3'|split:','} {* επιστρέφει ['1', '2', '3'] *}
Δείτε επίσης implode.
first
Επιστρέφει το πρώτο στοιχείο του πίνακα ή τον χαρακτήρα της συμβολοσειράς:
{=[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} {* outputs 'The latte' *}
Βλέπε επίσης capitalize, lower, upper.
implode (string glue = ''
)
Επιστρέφει μια συμβολοσειρά που είναι η συνένωση των συμβολοσειρών
του πίνακα. Ψευδώνυμο για το 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
Επιστρέφει το τελευταίο στοιχείο του πίνακα ή το χαρακτήρα της συμβολοσειράς:
{=[1, 2, 3, 4]|last} {* έξοδοι 4 *}
{='abcd'|last} {* έξοδοι 'd' *}
length
Επιστρέφει το μήκος μιας συμβολοσειράς ή ενός πίνακα.
- για συμβολοσειρές, θα επιστρέψει το μήκος σε χαρακτήρες UTF-8
- για πίνακες, επιστρέφει τον αριθμό των στοιχείων.
- για αντικείμενα που υλοποιούν τη διεπαφή Countable, θα χρησιμοποιήσει την τιμή επιστροφής της count()
- για αντικείμενα που υλοποιούν τη διεπαφή IteratorAggregate, θα χρησιμοποιήσει την τιμή επιστροφής της iterator_count()
{if ($users|length) > 10}
...
{/if}
lower
Μετατρέπει μια τιμή σε πεζά γράμματα. Απαιτεί την επέκταση 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}">checked</a>
<a href="{$link|nocheck}">unchecked</a>
Εκτυπώσεις:
<a href="">checked</a>
<a href="javascript:window.close()">unchecked</a>
Βλέπε επίσης checkUrl.
noescape
Απενεργοποιεί την αυτόματη διαφυγή.
{var $trustedHtmlString = '<b>hello</b>'}
Escaped: {$trustedHtmlString}
Unescaped: {$trustedHtmlString|noescape}
Εκτυπώνει:
Escaped: <b>hello</b>
Unescaped: <b>hello</b>
Η κατάχρηση του φίλτρου noescape
μπορεί να οδηγήσει σε
ευπάθεια XSS! Ποτέ μην το χρησιμοποιείτε εκτός αν είστε απολύτως
σίγουροι για το τι κάνετε και ότι η συμβολοσειρά που εκτυπώνετε
προέρχεται από αξιόπιστη πηγή.
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
padLeft (int length, string pad =
' '
)
Συμπληρώνει μια συμβολοσειρά σε συγκεκριμένο μήκος με μια άλλη συμβολοσειρά από αριστερά.
{='hello'|padLeft: 10, '123'} {* outputs '12312hello' *}
padRight (int length, string pad =
' '
)
Γεμίζει μια συμβολοσειρά σε ένα συγκεκριμένο μήκος με μια άλλη συμβολοσειρά από δεξιά.
{='hello'|padRight: 10, '123'} {* outputs 'hello12312' *}
query
Δημιουργεί δυναμικά μια συμβολοσειρά ερωτήματος στη διεύθυνση 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
Επιστρέφει τυχαίο στοιχείο πίνακα ή χαρακτήρα συμβολοσειράς:
{=[1, 2, 3, 4]|random} {* παράδειγμα εξόδου: 3 *}
{='abcd'|random} {* παράδειγμα εξόδου: 'b' *}
repeat (int count)
Επαναλαμβάνει τη συμβολοσειρά x φορές.
{='hello'|repeat: 3} {* outputs 'hellohellohello' *}
replace (string|array search, string replace =
''
)
Αντικαθιστά όλες τις εμφανίσεις της συμβολοσειράς αναζήτησης με τη συμβολοσειρά αντικατάστασης.
{='hello world'|replace: 'world', 'friend'} {* outputs 'hello friend' *}
Μπορούν να γίνουν πολλαπλές αντικαταστάσεις ταυτόχρονα:
{='hello world'|replace: [h => l, l => h]} {* έξοδοι 'lehho worhd' *}
replaceRE (string pattern, string replace =
''
)
Αντικαθιστά όλες τις εμφανίσεις σύμφωνα με την κανονική έκφραση.
{='hello world'|replaceRE: '/l.*/', 'l'} {* έξοδοι 'hel' *}
reverse
Αντιστρέφει δεδομένη συμβολοσειρά ή πίνακα.
{var $s = 'Nette'}
{$s|reverse} {* έξοδοι 'etteN' *}
{var $a = ['N', 'e', 't', 't', 'e']}
{$a|reverse} {* returns ['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)
Εξάγει μια φέτα ενός πίνακα ή μιας συμβολοσειράς.
{='hello'|slice: 1, 2} {* έξοδοι 'el' *}
{=['a', 'b', 'c']|slice: 1, 2} {* outputs ['b', 'c'] *}
Το φίλτρο slice λειτουργεί όπως η συνάρτηση array_slice
της PHP για
πίνακες και mb_substr
για συμβολοσειρές με μια υποχώρηση στο
iconv_substr
σε λειτουργία UTF-8.
Εάν η αρχή είναι μη αρνητική, η ακολουθία θα ξεκινήσει από αυτή την αρχή στη μεταβλητή. Εάν το start είναι αρνητικό, η ακολουθία θα ξεκινήσει τόσο μακριά από το τέλος της μεταβλητής.
Αν το length δίνεται και είναι θετικό, τότε η ακολουθία θα έχει μέχρι τόσα στοιχεία. Εάν η μεταβλητή είναι μικρότερη από το μήκος, τότε θα υπάρχουν μόνο τα διαθέσιμα στοιχεία της μεταβλητής. Αν το μήκος δίνεται και είναι αρνητικό, τότε η ακολουθία θα σταματήσει τόσα στοιχεία από το τέλος της μεταβλητής. Αν παραλείπεται, τότε η ακολουθία θα έχει τα πάντα από το offset μέχρι το τέλος της μεταβλητής.
Το φίλτρο θα αναδιατάξει και θα επαναφέρει τα κλειδιά του ακέραιου πίνακα από προεπιλογή. Αυτή η συμπεριφορά μπορεί να αλλάξει θέτοντας το preserveKeys σε true. Τα αλφαριθμητικά κλειδιά διατηρούνται πάντα, ανεξάρτητα από αυτήν την παράμετρο.
sort
Φίλτρο που ταξινομεί έναν πίνακα και διατηρεί τη συσχέτιση δεικτών.
{foreach ($names|sort) as $name}
...
{/foreach}
Πίνακας ταξινομημένος με αντίστροφη σειρά.
{foreach ($names|sort|reverse) as $name}
...
{/foreach}
Μπορείτε να περάσετε τη δική σας συνάρτηση σύγκρισης ως παράμετρο:
{var $sorted = ($names|sort: fn($a, $b) => $b <=> $a)}
spaceless
Αφαιρεί τα περιττά κενά από την έξοδο. Μπορείτε επίσης να
χρησιμοποιήσετε το ψευδώνυμο strip
.
{block |spaceless}
<ul>
<li>Hello</li>
</ul>
{/block}
Εκτυπώνει:
<ul> <li>Hello</li> </ul>
stripHtml
Μετατρέπει την HTML σε απλό κείμενο. Δηλαδή, αφαιρεί τις ετικέτες HTML και μετατρέπει τις οντότητες HTML σε κείμενο.
{='<p>one < two</p>'|stripHtml} {* outputs 'one < two' *}
Το προκύπτον απλό κείμενο μπορεί φυσικά να περιέχει χαρακτήρες που
αντιπροσωπεύουν ετικέτες HTML, για παράδειγμα το '<p>'|stripHtml
μετατρέπεται σε <p>
. Ποτέ μην εξάγετε το κείμενο που προκύπτει
με |noescape
, καθώς αυτό μπορεί να οδηγήσει σε ευπάθεια ασφαλείας.
substr (int offset, int length = null)
Εξάγει μια φέτα μιας συμβολοσειράς. Αυτό το φίλτρο έχει αντικατασταθεί από ένα φίλτρο φέτας.
{$string|substr: 1, 2}
translate (string message, …args)
Μεταφράζει εκφράσεις σε άλλες γλώσσες. Για να καταστήσετε το φίλτρο διαθέσιμο, πρέπει να ρυθμίσετε τον μεταφραστή. Μπορείτε επίσης να χρησιμοποιήσετε τις ετικέτες για τη μετάφραση.
<a href="basket">{='Baskter'|translate}</a>
<span>{$item|translate}</span>
trim (string charlist =
" \t\n\r\0\x0B\u{A0}"
)
Απογύμνωση αρχικών και τελικών χαρακτήρων, από προεπιλογή κενό διάστημα.
{=' I like Latte. '|trim} {* outputs 'I like Latte.' *}
{=' I like Latte.'|trim: '.'} {* outputs ' I like Latte' *}
truncate (int length, string append =
'…'
)
Συντομεύει μια συμβολοσειρά στο μέγιστο δοσμένο μήκος, αλλά προσπαθεί να διατηρήσει ολόκληρες λέξεις. Αν η συμβολοσειρά είναι κομμένη, προσθέτει ελλειψογράμματα στο τέλος (αυτό μπορεί να αλλάξει με τη δεύτερη παράμετρο).
{var $title = 'Hello, how are you?'}
{$title|truncate:5} {* Hell… *}
{$title|truncate:17} {* Hello, how are… *}
{$title|truncate:30} {* Hello, how are you? *}
upper
Μετατρέπει μια τιμή σε κεφαλαία γράμματα. Απαιτεί την επέκταση PHP
mbstring
.
{='latte'|upper} {* έξοδοι 'LATTE' *}
Βλέπε επίσης capitalize, firstUpper, lower.
webalize
Μετατρέπει σε ASCII.
Μετατρέπει τα κενά σε παύλες. Αφαιρεί χαρακτήρες που δεν είναι αλφαριθμητικοί, υπογράμμιση ή παύλα. Μετατρέπει σε πεζά γράμματα. Αφαιρεί επίσης τα λευκά κενά που προηγούνται και ακολουθούν.
{var $s = 'Our 10. product'}
{$s|webalize} {* outputs 'our-10-product' *}
Απαιτεί το πακέτο nette/utils.