Registrace template helpers přes config

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

Ahoj, pomocí @Hosiplana a jeho pullu jsem rozšířil NetteExtension tak, že je možné registrovat Helpery pro template v configu jako služby.

ukázka configu:

common:
	nette:
		template:
			helperLoaders: \Flame\Templating\Helpers
			helpers:
				thumb: @ThumbnailsCreator::thumb
	services:
		ThumbnailsCreator: \Flame\Templating\Helpers\ThumbnailsCreator(%wwwDir%, %imageStorage.thumbDir%)

Nyní je globálně dostupný helper thumb jak pro presnetery tak i pro komponenty. Bohužel, díky tomu, že výše zmíněný pull nebyl zatím začleněn do Nette, bylo zapotřebí přepsat metody createTemplate a templatePrepareFilters v UI\Presenter a UI\Control

Pokud byste chtěly toto vylepšení používat, je zapotřebí tento souborů Configurator.php a NetteExtension

V bootstrapu nezapomeňte změnit $configurator = new Flame\Config\Configurator;

Zajímá mě Vás názor :-)

//Edit
PS. Toto rozšíření a mnoho dalších je současní frameworku Flame

//Edit2 ----------------------------
Rozhodl jsem se své řešení z frameworku smazat. Ukázalo se v několika ohledech docela nepraktické.

Doufám, že nové řešení je na cestě – https://forum.nette.org/…factory-todo.
Pokud byste i přesto stáli o implementaci, tak v tomtu commitu https://github.com/…fc90281fe536, který odstraňuje funkčnost z fw, najdete vše potřebné.

Editoval sifik (4. 4. 2013 18:53)

enumag
Člen | 2118
+
0
-

Nevypadá to špatně, rád bych to co nejdříve viděl přímo v Nette. Prozatimní řešení je ovšem poněkud neohrabané na instalaci. Lepší by to bylo jako samostatné extension nedědící od NetteExtension s úplně samostatným repozitářem se souborem composer.json. :-) Flame by to mohl mít jako dependency.

OT: Co dalšího pěkného umí ten Flame?

Editoval enumag (10. 1. 2013 20:16)

Felix
Nette Core | 1186
+
0
-

Podle me je potreba aby createTemplate v UI volalo tu nette.templace tovarnicku. Setkavam se s tim snad denne.

sifik
Člen | 27
+
0
-

@enumag I já bych to rád, co nejdříve viděl v Nette. Uvidím, zda se k tomu nějak vyjádří David, pokud by to zůstalo delší dobu bez odezvy, udělám z toho samostatné extension :-)

Flame je spíše taková základní kolekce nástrojů, bez kterých si vývoj nette aplikace nedokáži představit. Implemtuje několik základních tříd pro práci s Uploaded files, assets, hesly… dále obsahuje themeManager, json response pro REST, již zmíněný thumbnailsCreator, několik základních tříd pro Doctrine, SimpleRestRouter a několik dalších tříd pro práci s Application\UI… několik addonů, jako StepForm, Wordpress importer, upravený VisualPaginator.

Editoval sifik (12. 1. 2013 14:44)

Tomáš Votruba
Moderator | 1114
+
0
-

Lze v současné master verzi registrovat helpery či filtry jinak než takto? Vycházím z Nette\Templating\Template

services:
	helpers: App\Helpers

factories:
	nette.template:
		setup:
			- registerFilter(App\Filter)
			- registerHelperLoader([@helpers, "loader"])

S tím, že v presenteru/komponentě je pro zohlednění této konfigurace potřeba volat:

$template = $this->context->createNette__template($class);

místo

$template = parent::createTemplate($class);

Presenter má tedy vlastní faktory na šablonu, která se liší od configu? To mi přijde trochu divné.
Tak vypadá, že první způsob sice zohlední config, ale nepřidá základní proměnné ($user…).

Editoval Schmutzka (2. 4. 2013 1:19)

enumag
Člen | 2118
+
0
-

@Schmutzka: Zatím ne. https://forum.nette.org/…factory-todo

Editoval enumag (2. 4. 2013 8:17)

sifik
Člen | 27
+
0
-

@Schmutzka Mohl by jsi mi prosím ukázat kód implementace

$template = $this->context->createNette__template($class);

pro UI\Control?

Mám problém s undefined metodou Presenter::getHttpResponse().

Tomáš Votruba
Moderator | 1114
+
0
-

@sifik: Nevím, jestli ještě potřebuješ odpověď, ale tento příspěvek by ti mohl pomoci.

Editoval Tomáš Votruba (4. 2. 2014 19:14)

sifik
Člen | 27
+
0
-

Tomáš Votruba napsal(a):

@sifik: Nevím, jestli ještě potřebuješ odpověď, ale tento příspěvek by ti mohl pomoci.

Děkuji. Kdysi se mi to už povedlo vyřešit následujícím způsobem https://github.com/…eFactory.php