Existuje způsob, jak registrovat latte filtry v neon souborech?

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

Tohle by se mi strašně hodilo, ale zatím jsem nikde, ani v dokumentaci nenašel, jestli a jak by se to dalo udělat. Jde to nějak? Popřípadě plánuje se něco takového v budoucnu?

Tharos
Člen | 1030
+
0
-

Koukám, že nyní lze z neonu registrovat pouze makra, používá se to pak takhle. Takže pro filtry nyní asi podpora není…

Můžeš si buďto tu extenzi přetížit a podporu pro tohle si tam doplnit (jak to jde od ruky záleží na tom, jak je ta extenze napsaná, ale tady bych věřil, že to půjde), anebo si to zařídit z jiné, vlastní extenze (takové fallback řešení…). Anebo můžeš poslat pull do Nette, pokud by ses na to cítil. :)

Editoval Tharos (5. 5. 2015 7:57)

Casper
Člen | 253
+
+3
-
nette.latteFactory:
        setup:
            - addFilter('name', 'callback')
fary
Člen | 155
+
0
-

Moc díky, ale nevím, jestli jsem něco neudělal špatně či co, ale když do konfigu přidám:

nette.latteFactory:
	setup:
		- addFilter('foo', MyFilter::format($a, $b, $c))

tak se mi vypíše tato hláška:

`Nette\InvalidStateException

Found sections ‚nette.latteFactory‘ in configuration, but corresponding extensions are missing.`

Nevím, jestli mám zápis toho callbacku vůbec dobře neb jestli není potřeba to vložit někam „hlouběji“.

Pak jsem to tedy zkusil vložit do services:

services:
	nette.latteFactory:
		setup:
			- addFilter('foo', MyFilter::format($a, $b, $c))

ale zase mi to píše:

`Nette\DI\ServiceCreationException

Service ‚nette.latteFactory‘: Unable to pass specified arguments to MyFilter::format()`

takže asi nepředávám správně ten callback či co. Mohl bych poprosit o malou ukázku?

newPOPE
Člen | 648
+
+2
-

Ja to pouzivam takto ale nepouzivam staticke volanie ale dynamicke sluzby. Mam pocit, ze tam tie parametre uvadzat nemusis (ale ruku do ohna za to nedam).

services:
	dateResolver: App\Template\DateResolver
	nette.latteFactory:
    	setup:
      		- addFilter('date', [@dateResolver, convertToString])

Tebe by mohlo pomoct nieco taketo:

	- addFilter('date', Foo::bar)  #cize bez parametrov

Editoval newPOPE (5. 5. 2015 10:53)

fary
Člen | 155
+
0
-

Takže tou metodou, kterou zminoval @newPOPE to jde naprosto skvěle. :-)

services:
	nette.latteFactory:
		setup:
			- addFilter('foo', FilterFoo::main)
			- addFilter('bar', FilterBar::main)
			...

Moc díky