Συναρτήσεις Latte

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

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

Χρήση

Οι συναρτήσεις χρησιμοποιούνται ακριβώς όπως οι συνήθεις συναρτήσεις 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)}

Δείτε επίσης το φίλτρο 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

Επιστρέφει το πρώτο στοιχείο ενός πίνακα ή τον πρώτο χαρακτήρα ενός string:

{=first([1, 2, 3, 4])}    {* εκτυπώνει 1 *}
{=first('abcd')}          {* εκτυπώνει 'a' *}

Δείτε επίσης last, φίλτρο 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}

Δείτε επίσης το φίλτρο group.

hasBlock (string $name): bool

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

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

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

last (string|array $value)mixed

Επιστρέφει το τελευταίο στοιχείο ενός πίνακα ή τον τελευταίο χαρακτήρα ενός string:

{=last([1, 2, 3, 4])}    {* εκτυπώνει 4 *}
{=last('abcd')}          {* εκτυπώνει 'd' *}

Δείτε επίσης first, φίλτρο last.

odd (int $value): bool

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

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

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

Εξάγει ένα τμήμα ενός πίνακα ή ενός string.

{=slice('hello', 1, 2)}           {* εκτυπώνει 'el' *}
{=slice(['a', 'b', 'c'], 1, 2)}   {* εκτυπώνει ['b', 'c'] *}

Η συνάρτηση λειτουργεί όπως η συνάρτηση PHP array_slice για πίνακες ή mb_substr για strings με εναλλακτική λύση τη συνάρτηση iconv_substr σε λειτουργία UTF-8.

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

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

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

έκδοση: 3.0