Λειτουργίες Latte

Εκτός από τις κοινές συναρτήσεις PHP, μπορείτε επίσης να τις χρησιμοποιήσετε σε πρότυπα.

clamp συγκρατεί την τιμή στην περιοχή
divisibleBy ελέγχει αν μια μεταβλητή διαιρείται με έναν αριθμό
even ελέγχει αν ο δεδομένος αριθμός είναι ζυγός
first επιστρέφει το πρώτο στοιχείο του πίνακα ή τον χαρακτήρα της συμβολοσειράς
group ομαδοποιεί δεδομένα σύμφωνα με διάφορα κριτήρια
hasBlock ανιχνεύει την ύπαρξη ενός μπλοκ
last επιστρέφει το τελευταίο στοιχείο του πίνακα ή τον χαρακτήρα της συμβολοσειράς
odd ελέγχει αν ο δεδομένος αριθμός είναι περιττός
slice εξάγει ένα τμήμα ενός πίνακα ή μιας συμβολοσειράς

Χρήση

Οι συναρτήσεις χρησιμοποιούνται με τον ίδιο τρόπο όπως οι κοινές συναρτήσεις της PHP και μπορούν να χρησιμοποιηθούν σε όλες τις εκφράσεις:

<p>{clamp($num, 1, 100)}</p>

{if odd($num)} ... {/if}

Οι προσαρμοσμένες συναρτήσεις μπορούν να καταχωρηθούν με αυτόν τον τρόπο:

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

Το χρησιμοποιούμε σε ένα πρότυπο όπως αυτό:

<p>{shortify($text)}</p>
<p>{shortify($text, 100)}</p>

Λειτουργίες

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

Επιστρέφει την τιμή που είναι δεσμευμένη στο εύρος των min και max.

{=clamp($level, 0, 255)}

Βλέπε επίσης filter clamp:

divisibleBy (int $value, int $by)bool

Ελέγχει αν μια μεταβλητή είναι διαιρετή με έναν αριθμό.

{if divisibleBy($num, 5)} ... {/if}

even (int $value): bool

Ελέγχει αν ο δεδομένος αριθμός είναι ζυγός.

{if even($num)} ... {/if}

first (string|iterable $value)mixed

Επιστρέφει το πρώτο στοιχείο του πίνακα ή τον χαρακτήρα της συμβολοσειράς:

{=first([1, 2, 3, 4])}    {* έξοδοι 1 *}
{=first('abcd')}          {* έξοδοι 'a' *}

Βλέπε επίσης last, filter first.

group (iterable $data, string|int|\Closure $by)array

Αυτή η λειτουργία ομαδοποιεί τα δεδομένα σύμφωνα με διάφορα κριτήρια.

Σε αυτό το παράδειγμα, οι γραμμές του πίνακα ομαδοποιούνται με βάση τη στήλη categoryId. Η έξοδος είναι ένας πίνακας πεδίων όπου το κλειδί είναι η τιμή στη στήλη categoryId. Διαβάστε τις λεπτομερείς οδηγίες.

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

Βλέπε επίσης ομάδα φίλτρων.

hasBlock (string $name): bool

Ελέγχει αν υπάρχει το μπλοκ με το καθορισμένο όνομα:

{if hasBlock(header)} ... {/if}

Δείτε επίσης τον έλεγχο ύπαρξης μπλοκ.

last (string|array $value)mixed

Επιστρέφει το τελευταίο στοιχείο του πίνακα ή τον τελευταίο χαρακτήρα της συμβολοσειράς:

{=last([1, 2, 3, 4])}    {* έξοδοι 4 *}
{=last('abcd')}          {* έξοδοι 'd' *}

Βλέπε επίσης first, filter last.

odd (int $value): bool

Ελέγχει αν ο δεδομένος αριθμός είναι περιττός.

{if odd($num)} ... {/if}

slice (string|array $value, int $start, ?int $length=null, bool $preserveKeys=false): string|array

Εξαγάγει μια φέτα ενός πίνακα ή μιας συμβολοσειράς.

{=slice('hello', 1, 2)}           {* έξοδοι 'el' *}
{=slice(['a', 'b', 'c'], 1, 2)}   {* outputs ['b', 'c'] *}

Το φίλτρο slice λειτουργεί όπως η συνάρτηση array_slice της PHP για πίνακες και mb_substr για συμβολοσειρές με μια υποχώρηση στο iconv_substr σε λειτουργία UTF-8.

Εάν η αρχή είναι μη αρνητική, η ακολουθία θα ξεκινήσει από αυτή την αρχή στη μεταβλητή. Εάν το start είναι αρνητικό, η ακολουθία θα ξεκινήσει τόσο μακριά από το τέλος της μεταβλητής.

Αν το length δίνεται και είναι θετικό, τότε η ακολουθία θα έχει μέχρι τόσα στοιχεία. Εάν η μεταβλητή είναι μικρότερη από το μήκος, τότε θα υπάρχουν μόνο τα διαθέσιμα στοιχεία της μεταβλητής. Αν το μήκος δίνεται και είναι αρνητικό, τότε η ακολουθία θα σταματήσει τόσα στοιχεία από το τέλος της μεταβλητής. Αν παραλείπεται, τότε η ακολουθία θα έχει τα πάντα από το offset μέχρι το τέλος της μεταβλητής.

Το φίλτρο θα αναδιατάξει και θα επαναφέρει τα κλειδιά του ακέραιου πίνακα από προεπιλογή. Αυτή η συμπεριφορά μπορεί να αλλάξει θέτοντας το preserveKeys σε true. Τα αλφαριθμητικά κλειδιά διατηρούνται πάντα, ανεξάρτητα από αυτήν την παράμετρο.

έκδοση: 3.0