Problém se String Template a widgety po přechodu na Nette 2.0 Beta 2

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
David Růžička
Člen | 43
+
+1
-

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
+
0
-

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
+
0
-

StringTemplate v Nette 2 vubec nepotrebujes

$template = $this->createTemplate('Nette\Templating\Template');
$template->setSource($myLatteTemplate);
$template->render();
David Růžička
Člen | 43
+
0
-

Díky moc oběma, fungují obě řešení. Použil jsem to od HosipLan, abych se zbavil závislosti na StringTemplate.