Latte: DefaultMacros splitted into Nette\Latte\Macros\MacroSet, CoreMacros, UIMacros and CacheMacro
- Mikulas Dite
- Člen | 756
Registrují se metodou addMacro
nad parserem: https://github.com/…3d2eade01319#…,
kdekoliv před samotným renderem a tam, kde je k parseru přístup. Je
instanční, takže se z něj dá udělat service a předávat dál.
- Patrik Votoček
- Člen | 2221
A jak pak dostanu Engine do komponenty a presenteru? narážím na https://github.com/…tte/pull/263
- Patrik Votoček
- Člen | 2221
Něco takového jsem pulloval dávno… https://github.com/…tte/pull/199 Nicméně nelíbí se mi že musím upravovat svůj base control i base presenter!
- Filip Procházka
- Moderator | 4668
to je toho… jedna metoda.. Ale je fakt, že by tam TemplateFactory byt mohl
- Yrwein
- Člen | 45
TemplateFactory/service +1. :) Teď vážně: Užitečné by to bylo zvláště tehdy, potřebuje-li člověk jinou defaultní FileTemplate a ještě ji nějak nastavit (což se nyní dá řešit jen přes přepsání metody createTemplate). Případně by createTemplate mohla místo parametru class brát rovnou instanci.
- knyttl
- Člen | 196
Patrik Votoček napsal(a):
Něco takového jsem pulloval dávno… https://github.com/…tte/pull/199 Nicméně nelíbí se mi že musím upravovat svůj base control i base presenter!
Přesně, to se ale týká nejen nejen té modifikace, ale i dvojnásobné registrace maker pro controls i presenters.
- Patrik Votoček
- Člen | 2221
knyttl napsal(a):
Přesně, to se ale týká nejen nejen té modifikace, ale i dvojnásobné registrace maker pro controls i presenters.
Možná jsem to blbě napsal ale ta moje modifikace tím netrpí trpí tím stávající implementace v Nette.
- David Grudl
- Nette Core | 8254
Tahle věc je trošku složitější.
1) šablona ani její Latte není service.
Nepotřebujeme mít v aplikaci jednu instanci šablony. Jako závislost má proto smysl předávat nikoliv šablonu, ale její továrnu. Takže
2) Controls nemohou být závislé na cizí šabloně
Představte si, že distribuujete komponentu, která se vykresluje – ona ví nejlíp, jaká makra používá, kde má uloženou šablonu atd. Není možné ji učinit závislou na nějaké naší globální továrničce na šablony. Jedinou závislost, kterou ji předáme, je cacheStorage.