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])