Po přepsání n:href makra nefungují snippety
- Mikulas Dite
- Člen | 756
Ahoj,
narazil jsem na problém s vlastním makrem a snippety. Přepsal jsem si
n:href, ale (některé!) snippety přestaly fungovat.
Registrace:
/**
* @param \Nette\Templating\Template $template
*/
public function templatePrepareFilters($template)
{
$latte = new \Nette\Latte\Engine;
\Nette\Latte\Macros\FriendlyMacros::install($latte->parser, $this);
$template->registerFilter($latte);
}
Třída maker, snippety nefungují ani pokuď je úplně stejné jako UIMacros.
class FriendlyMacros extends UIMacros
{
public static function install(Latte\Parser $parser, \Nette\Application\UI\Presenter $presenter = NULL)
{
$me = new static($parser);
$me->addMacro('@href', function(MacroNode $node, $writer) use ($me) {
return ' ?> href="<?php ' . $me->macroLink($node, $writer) . ' ?>"<?php ';
});
}
}
Netušíte, proč to zlobí právě u ajax requestu?
- Mikulas Dite
- Člen | 756
Aha, nefunguje to, protože jsem dědit od UIMacros
. Když vezmu
jenom MacroSet
, tak je to v pohodě. Proč? Ta chyba je hrozně
wtf a zasloužila by si alespoň warning, ale nevidím, kde je problém.
- Mikulas Dite
- Člen | 756
No jasně, ale měla by se jenom přepsat ta původní. Slabší performance
před cachováním je mi fuk, ale snippety to zachovat mělo. Tzn. když se
tímhle přepsal i {snippet}
, mělo to fungovat dál.
Už to vidím, to je ta Nette obsese na private
(a btw taky
final
). Ty poděděné třídy nemají
$namedBlocks
.
Každopádně dík.