Jak na úpravu prepare vygenerované templaty?

norbe
Backer | 408
+
0
-

Ve starém latte nebyl problém si dynamicky nastavit parentName vygenerované šablony (v makrosetu implementaná metoda finalize, která upravila prolog šablony).

Používáme to v modulární aplikaci na doplňování / přepisování bloků (komponenta se začne vykreslovat od na posledy přidané rozšiřující šablony a postupně volá další až se parentName nastaví na hlavní šablonu komponenty, která si pak ještě může nastavit parentName z {layout }).

V novém latte mne ale nenapadá jak na to. Povedlo se mi to částečně s pomocí coreParentFinder, ale tam narážím na problém toho, že nette ho zavolá pouze jednou (viz commit https://github.com/…24c0d1cb2bdf).

Napadá někoho způsob jak to vyřešit?

norbe
Backer | 408
+
0
-

V podstatě bych potřeboval implementovat {layout } tag/node, který ale nebudu muset vkládat do šablony, ale bude fungovat autoamticky…

norbe
Backer | 408
+
0
-

Vyřešeno vlastním FileLoaderem… Zajímalo by mne ale, jak bych tohle byl schopný vyřešit úpravou AST. Nedal by mi @DavidGrudl tip jak na to?


class ExtensionBlockFileLoader extends Latte\Loaders\FileLoader {


	public function getContent(string $name): string {
		$content = parent::getContent($name);
		return '{blockLoader} ' . $content;
	}
}
David Grudl
Nette Core | 8284
+
0
-

@norbe z hlavy nevím, musel bych se do toho ponořit