Problém v šabloně u definice filtru po upgrade nette na php 8.1

Allconius
Člen | 313
+
0
-

Ahoj,

po upgrade nette na php 8.1 mám problém s definicí filtru, v šabloně mám toto:

<div class="akce">{$post->id, $post->pocetmist, $post->idudalosti|obsazeno:''|noescape}</div>

a v presenteru definici filtru:

$this->template->addFilter('obsazeno', function ($id, $pocet, $udalost, $format = '') {
.....
}

ale pořád mi to píše chybu:

Latte\CompileException: Unexpected ',' (in '.../Homepage/default.latte' on line 33 at column 40) in /vendor/latte/latte/src/Latte/Compiler/TagParser.php:222

nechápu proč vadí že mám u toho filtru 3 proměnné oddělené čárkou ?

Milo
Nette Core | 1283
+
+2
-

Filtr se aplikuje na jednu proměnnou (nebo blok), ta je mu předána jako první argument. Ostatní argumenty se uvádějí za:

<div class="akce">{$post->id|obsazeno: $post->pocetmist, $post->idudalosti |noescape}</div>

Spíš by se asi hodila funkce, tedy addFunction('obsazeno', ...) a

<div class="akce">{obsazeno($post->id, $post->pocetmist, $post->idudalosti)}</div>`.
Allconius
Člen | 313
+
0
-

Milo napsal(a):

Filtr se aplikuje na jednu proměnnou (nebo blok), ta je mu předána jako první argument. Ostatní argumenty se uvádějí za:

<div class="akce">{$post->id|obsazeno: $post->pocetmist, $post->idudalosti |noescape}</div>

Spíš by se asi hodila funkce, tedy addFunction('obsazeno', ...) a

<div class="akce">{obsazeno($post->id, $post->pocetmist, $post->idudalosti)}</div>`.

Ahoj, díky moc, asi to zkusím vyřešit že si ty ostatní proměnné budu tahat až v definici filtru nebo tou funkcí

Milo
Nette Core | 1283
+
0
-

Nevidím do tvého kódu, tak to ber s rezervou, ale předáváš si 3 atributy $post, tak co ho do filtru předat celý? {$post|printPost}

Kcko
Člen | 465
+
0
-

Případně si přečti můj starý topic a může to být i bez argumentu / argumentů, s úpravou aplikační logiky samozřejmě – https://forum.nette.org/…e-to-spravne

Editoval Kcko (6. 1. 2023 12:03)