Jak zaregistrovat Latte maco uvnitř extension?

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

Mám latte macro a potřeboval bych jej zaregistrovat programově přímo v extension, ne pomocí konfigurace v neon souboru. Vím, jak to zařídit v té neon konfiguraci, chtěl bych ale docílit toho, aby nebylo danou extension konfigurovat nadvakrát, tzn., že nejprve se zaregistruje samotná extension a pak samostatně dané macro. Já bych chtěl docílit toho, aby ta konfigurace macra v neon knfiguraci odpadla a jediné, co by bylo potřeba, by byla registrace dané extension.

David Matějka
Moderator | 6445
+
+3
-

celkem slozite :)

$builder->getDefinition('latte.latteFactory')
    ->addSetup('?->onCompile[] = function($engine) { FooMacros::install($engine->getCompiler()); }', ['@self']);
fary
Člen | 155
+
0
-

Děkuju :)

A kam tento kód vložit? do loadConfiguration(), beforeCompile() nebo afterCompile().

David Matějka
Moderator | 6445
+
+7
-

beforeCompile. i kdyz v tomhle pripade je to celkem jedno, ale modifikovat sluzby by se mely az tam.

v urcitych pripadech totiz muze byt problem s poradim extensions, tzn. v loadConfiguration by ta sluzba jeste nemusela byt registrovana tim druhym extension (v tomhle pripade LatteExtension)

takze:

  • v loadConfiguration registruji vlastni sluzby
  • v beforeCompile modifikuju stavajici
  • v afterCompile uz je sluzby vubec nemodifikuju, pouze mohu upravit vygenerovany kod
fary
Člen | 155
+
0
-

Dobře, moc díky.