Vlastni template helper v sablone kompoenty nefunguje
- flexroad
- Člen | 117
Ahoj,
jak docilit fungujiciho templatehelperu, ktery registruji v basepresenteru nasledujicim zpusobem?
protected function createTemplate($class = NULL) {
$template = parent::createTemplate($class);
$template->registerHelper('test', function ($val) {
return 'test - ' . $val;
});
return $template;
}
Pokud toto pouziju v jakemkoliv presenteru, vse funguje jak ma.
<div class="place">{$val|test}</div>
Pokud ale zaregistruju v prezenteru komponentu a chci to pouzit v jeji
template, krici na me, ze:
Filter ‚test‘ is not defined :(
Nevite nekdo, jak to podedit od toho prezenteru a predat sablone?
Dikyyy,
@flexroad
- David Matějka
- Moderator | 6445
Jakou mas verzi nette?
od 2.2 je muzes registrovat v neonu:
services
nette.latteFactory:
setup:
- addFilter(test, [FooClass, barMethod])
v 2.1 si muzes treba vytvorit traitu
- flexroad
- Člen | 117
David Matějka napsal(a):
Jakou mas verzi nette?
od 2.2 je muzes registrovat v neonu:services nette.latteFactory: setup: - addFilter(test, [FooClass, barMethod])
v 2.1 si muzes treba vytvorit traitu
@DavidMatějka :
Pozivam 2.3
Toto je asi to co hledam, jen nevim, jak a kde vytvorit FooClass a jeji
barMethod?
A jak ji potom registrovat aby na ni bylo „videt“?
Zkousel jsem do slozky „presenters“ vytvorit soubor „FooClass.php“ s nasledujicim:
<?php
namespace App;
class FooClass
{
public static function barMethod()
{
return "aa";
}
}
ale ladenka vraci:
Callback ‚FooClass::barMethod‘ is not callable
Je to potreba jeste nejak registrovat v neonu?
Diky,
@flexroad
- David Matějka
- Moderator | 6445
Kdyz ji das do namespace, tak ten namespace musis uvest v tom neonu..
- David Matějka
- Moderator | 6445
@factor ten callback nemusi byt staticka metoda, muzes tam dat klidne callback na metodu nejake sluzby
services:
myService: App\Model\MyService
nette.latteFactory:
setup:
- addFilter(test, [@myService, xxxx])