nette 2.4 helper v proměnné

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
tatyalien
Člen | 239
+
0
-

Ahoj,
Mám do šablony předané array s názvy helperů, které si uživatel nakliká a v cyklu to procházím postupně a nastavuji helpery.. Ale v nette 2.4. je proměnná $template deprecated. Níže zasílám jak to bylo ve starším nette (fungovalo to dobře). Jak tento kód ale změnit?

//helper s parametry:
{var $textConvert = $template->{$helperEntity->getHelperName()}($textConvert, $tmpParams)}
//helper bez parametrů:
{var $textConvert = $template->{$helperEntity->getHelperName()}($textConvert)}

Zkusil jsem to přepsat na závorkovou notaci, ale taky to nebere.

{var $textConvert = ($textConvert|{$helperEntity->getHelperName()}($tmpParams))}

ale tam dostanu Modifier name must be alphanumeric string, ‚{‘ given in

johnnie
Člen | 54
+
0
-

v topicu o testovani nette 2.4 sa pise toto

přistupujete k proměnné $template kvůli volání filtrů, což lze nyní udělat přímo v šabloně pomocí výrazu ($var|trim) nebo v PHP kódu generovaným makrem pomocí call_user_func($this->filters->trim, $val, …).

zdroj

pre sablony je urcene zvislitko ale skus to call_user_func, mozno pomoze.

Editoval johnnie (6. 6. 2017 9:57)

David Matějka
Moderator | 6445
+
+1
-

dynamicke nazvy filtru nejsou oficialne podporovane. jedine reseni je to s call_user_func, jak pise @johnnie. problem je, ze to je celkem internals vec, takze se v budoucnu muze zmenit.

spise bych se zamyslel nad tim, zda je sablona to prave misto na nejake slozitejsi operace jako je ten tvuj kod a zda by nebylo lepsi to zpracovat v presenteru/modelu a do sablony posilat hotovy vysledek

tatyalien
Člen | 239
+
0
-

Díky: fachá:

//s parametrem:
{var $textConvert = call_user_func($this->filters->{$helperEntity->getHelperName()}, $textConvert, $tmpParams)}

//bez parametru
{var $textConvert = call_user_func($this->filters->{$helperEntity->getHelperName()}, $textConvert)}

johnnie napsal(a):

v topicu o testovani nette 2.4 sa pise toto

přistupujete k proměnné $template kvůli volání filtrů, což lze nyní udělat přímo v šabloně pomocí výrazu ($var|trim) nebo v PHP kódu generovaným makrem pomocí call_user_func($this->filters->trim, $val, …).

zdroj

pre sablony je urcene zvislitko ale skus to call_user_func, mozno pomoze.

tatyalien
Člen | 239
+
0
-

Je to pro výpis mini datagridu, kde si uživatel naklikává případné konverze na hodnotě… takže to dělám až ve výpisu dat v šabloně :( (a může mít helpery jak pro zobrazení, pro export, tak pro nápovědu, takže úprava surových dat jen tak nejde…)

David Matějka napsal(a):

dynamicke nazvy filtru nejsou oficialne podporovane. jedine reseni je to s call_user_func, jak pise @johnnie. problem je, ze to je celkem internals vec, takze se v budoucnu muze zmenit.

spise bych se zamyslel nad tim, zda je sablona to prave misto na nejake slozitejsi operace jako je ten tvuj kod a zda by nebylo lepsi to zpracovat v presenteru/modelu a do sablony posilat hotovy vysledek

Editoval tatyalien (6. 6. 2017 10:29)