-
-
Notifications
You must be signed in to change notification settings - Fork 277
Expand file tree
/
Copy pathfunctions.texy
More file actions
156 lines (106 loc) · 5.02 KB
/
functions.texy
File metadata and controls
156 lines (106 loc) · 5.02 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
Funkcje Latte
*************
.[perex]
W szablonach możemy oprócz zwykłych funkcji PHP używać również tych dodatkowych.
.[table-latte-filters]
| `clamp` | [ogranicza wartość do danego zakresu |#clamp]
| `divisibleBy`| [sprawdza, czy zmienna jest podzielna przez liczbę |#divisibleBy]
| `even` | [sprawdza, czy podana liczba jest parzysta |#even]
| `first` | [zwraca pierwszy element tablicy lub znak ciągu |#first]
| `group` | [grupuje dane według różnych kryteriów |#group]
| `hasBlock` | [sprawdza istnienie bloku |#hasBlock]
| `last` | [zwraca ostatni element tablicy lub znak ciągu |#last]
| `odd` | [sprawdza, czy podana liczba jest nieparzysta |#odd]
| `slice` | [wyodrębnia część tablicy lub ciągu |#slice]
Użycie
======
Funkcje używane są tak samo jak zwykłe funkcje PHP i można ich używać we wszystkich wyrażeniach:
```latte
<p>{clamp($num, 1, 100)}</p>
{if odd($num)} ... {/if}
```
[Funkcje niestandardowe|custom-functions] można rejestrować w ten sposób:
```php
$latte = new Latte\Engine;
$latte->addFunction('shortify', fn(string $s, int $len = 10) => mb_substr($s, 0, $len));
```
W szablonie wywołuje się je w następujący sposób:
```latte
<p>{shortify($text)}</p>
<p>{shortify($text, 100)}</p>
```
Funkcje
=======
clamp(int|float $value, int|float $min, int|float $max): int|float .[method]
----------------------------------------------------------------------------
Ogranicza wartość do podanego zakresu włącznie min i max.
```latte
{=clamp($level, 0, 255)}
```
Zobacz także [filtr clamp |filters#clamp].
divisibleBy(int $value, int $by): bool .[method]
------------------------------------------------
Sprawdza, czy zmienna jest podzielna przez liczbę.
```latte
{if divisibleBy($num, 5)} ... {/if}
```
even(int $value): bool .[method]
--------------------------------
Sprawdza, czy podana liczba jest parzysta.
```latte
{if even($num)} ... {/if}
```
first(string|iterable $value): mixed .[method]
----------------------------------------------
Zwraca pierwszy element tablicy lub znak ciągu:
```latte
{=first([1, 2, 3, 4])} {* wyświetla 1 *}
{=first('abcd')} {* wyświetla 'a' *}
```
Zobacz także [#last], [filtr first |filters#first].
group(iterable $data, string|int|\Closure $by): array .[method]{data-version:3.0.16}
------------------------------------------------------------------------------------
Funkcja grupuje dane według różnych kryteriów.
W tym przykładzie wiersze w tabeli są grupowane według kolumny `categoryId`. Wyjściem jest tablica tablic, gdzie kluczem jest wartość w kolumnie `categoryId`. [Przeczytaj szczegółowy przewodnik|cookbook/grouping].
```latte
{foreach group($items, categoryId) as $categoryId => $categoryItems}
<ul>
{foreach $categoryItems as $item}
<li>{$item->name}</li>
{/foreach}
</ul>
{/foreach}
```
Zobacz także filtr [group |filters#group].
hasBlock(string $name): bool .[method]{data-version:3.0.10}
-----------------------------------------------------------
Sprawdza, czy blok o podanej nazwie istnieje:
```latte
{if hasBlock(header)} ... {/if}
```
Zobacz także [sprawdzanie istnienia bloków |template-inheritance#Sprawdzanie istnienia bloków].
last(string|array $value): mixed .[method]
------------------------------------------
Zwraca ostatni element tablicy lub znak ciągu:
```latte
{=last([1, 2, 3, 4])} {* wyświetla 4 *}
{=last('abcd')} {* wyświetla 'd' *}
```
Zobacz także [#first], [filtr last |filters#last].
odd(int $value): bool .[method]
-------------------------------
Sprawdza, czy podana liczba jest nieparzysta.
```latte
{if odd($num)} ... {/if}
```
slice(string|array $value, int $start, ?int $length=null, bool $preserveKeys=false): string|array .[method]
-----------------------------------------------------------------------------------------------------------
Wyodrębnia część tablicy lub ciągu.
```latte
{=slice('hello', 1, 2)} {* wyświetla 'el' *}
{=slice(['a', 'b', 'c'], 1, 2)} {* wyświetla ['b', 'c'] *}
```
Funkcja działa jak funkcja PHP `array_slice` dla tablic lub `mb_substr` dla ciągów z fallbackiem na funkcję `iconv_substr` w trybie UTF‑8.
Jeśli start jest dodatni, sekwencja zacznie się przesunięta o tę liczbę od początku tablicy/ciągu. Jeśli jest ujemny, sekwencja zacznie się przesunięta o tyle od końca.
Jeśli podany jest parametr length i jest dodatni, sekwencja będzie zawierać tyle elementów. Jeśli do tej funkcji zostanie przekazany ujemny parametr length, sekwencja będzie zawierać wszystkie elementy oryginalnej tablicy, zaczynając od pozycji start i kończąc na pozycji mniejszej o length elementów od końca tablicy. Jeśli ten parametr nie zostanie podany, sekwencja będzie zawierać wszystkie elementy oryginalnej tablicy, zaczynając od pozycji start.
Domyślnie filtr zmienia kolejność i resetuje klucze całkowite tablicy. To zachowanie można zmienić, ustawiając preserveKeys na true. Klucze ciągów są zawsze zachowywane, niezależnie od tego parametru.