Problém se String Template a widgety po přechodu na Nette 2.0 Beta 2
- David Růžička
- Člen | 43
Po přechodu z nette-v2.0beta-93 na oficiální Nette 2.0 Beta 2 (obojí
se jmennými prostory pro PHP 5.3) mi přestala fungovat část kódu
transformující šablonu předanou ve stringu. Resp. nefunguje to pouze
v případě, že v šabloně použiju {widget} nebo {control}, bez widgetu to
funguje i v nové verzi Nette.
Používám na to StringTemplate a následující kód:
$latte = new Latte\Engine;
$template = new StringTemplate();
$template->content = $strTemplate;
$template->registerFilter($latte);
$template->presenter = $template->control = $this;
Pokud je v šabloně widget/control skončí to na $template->__toString(); s chybou „Undefined variable: _control“
V changelistu jsem se dočetl o přejmenování třídy Template, takže jsem ji ve StringTemplate, která z ní dědí, zaměnil za FileTemplate, ale nepomohlo to.
Nevíte někdo, jak to teď vyřešit? Jde o bug nebo je teď třeba udělat něco jinak?
- Vojtěch Dobeš
- Gold Partner | 1316
Nebude to nyní?
$template->presenter = $template->_control = $this;
(viz text chybové hlášky – $control
byla
přejmenována na $_control
, aby se předešlo jmenným
konfliktům)
Editoval vojtech.dobes (9. 1. 2012 16:25)
- Filip Procházka
- Moderator | 4668
StringTemplate v Nette 2 vubec nepotrebujes
$template = $this->createTemplate('Nette\Templating\Template');
$template->setSource($myLatteTemplate);
$template->render();
- David Růžička
- Člen | 43
Díky moc oběma, fungují obě řešení. Použil jsem to od HosipLan, abych se zbavil závislosti na StringTemplate.