Změny a novinky uvnitř Latte
Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
- David Grudl
- Nette Core | 8227
V implementaci Latte došlo v poslední verzi k několika změnám. Týkají se vás pouze pokud Latte rozšiřujete o nová makra; pokud v něm jen píšete šablony, k žádným změnám nedochází.
BC breaky:
- Třída
Latte\Parser
byla rozdělena naLatte\Parser
aLatte\Compiler
. S makry pracuje compiler, takže se mění typehint uMacroSet::install()
nebo případné voláníEngine::
neboMacroSet::getParser()
naMacroSet::getCompiler()
. - čistá n:makra se již neregistrují pomocí
$me->addMacro('@class', $callback);
ale pomocí$me->addMacro('class', NULL, NULL, $callback);
. (Zavináč byl odstraněn). - Přepínání režimu XHTML/HTML už nevychází z hodnoty
Nette\Utils\Html::$xhtml
. Výchozí zůstává XHTML režim (protože je kompatibilní s HTML5 ale ne naopak) a přepnout jej do HTML lze buď makrem{contentType html}
nebo voláním$latte->compiler->defaultContentType = Nette\Latte\Compiler::CONTENT_HTML;
nebo v konfiguraci.
A teď novinky:
- Každé makro reprezentované objektem MacroNode má nyní proměnné
$openingCode, $closingCode a $attrCode
, ve kterých je uložen otevírací, uzavírací a n:atributový PHP kód makra. (Včetně PHP značek) - Otevírací, uzavírací a atributový kód může být vygenerován kdykoliv! Tedy klidně až ve chvíli, kdy se makro uzavírá.
- Vnitřek makra je v $node->content
- U maker zapsaných pomocí n:atributů je k dispozici proměnná $node->htmlNode
- Šablony lze tokenizovat pomocí
Latte\Parser
, ten vrací pole objektůLatte\Token
. Lze tak třeba zkoumat, jaká makra soubor obsahuje.