nacteni sablony v presenteru

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
geosup
Člen | 16
+
0
-

Zdravim vas, mam takovy dotaz. Je nejak mozne v presenteru nacist latte sablonu do promenne tak, aby v te promenne byla ta sablona jiz zkompilovana? Pro predstavu, neco jako ve Smarty metoda fetch.

OK3
Člen | 91
+
0
-

Něco podobného jsem řešil: https://forum.nette.org/…-do-promenne

V zásadě jde o to, že si vytvoříš šablonu, zaregistruješ proměnné a pak objekt přetypuješ na string.

Editoval OK3 (30. 5. 2011 10:46)

geosup
Člen | 16
+
0
-

diky… vyzkousim :)

geosup
Člen | 16
+
0
-

Tak jsem to vyzkousel a dopracoval jsem se k tomu, ze mi to teda nacita tu latte sablonu. Ale kdyz se pokusim zaregistrovat makra, tak to prestane fungovat. Dokonce bez presne chyby. Vraci to jenom chybu 500. Zjistil jsem jenom, ze problem nastane v metode render(), ale nedari se mi zjistit, v cem ten problem vezi.

kod:

$temp = new FileTemplate();
$latte = new \Nette\Latte\Engine;
$macroSet = new \Nette\Latte\Macros\FormMacros($latte->parser);
$temp->registerFilter($latte->parser);
$temp->registerHelper('escape', 'DefaultHelpers::escapeHtml');
$temp->registerHelper('escapeJs', 'DefaultHelpers::escapeJs');
$temp->registerHelper('escapeCss', 'DefaultHelpers::escapeCss');
$temp->setFile('sablona.latte');
$this->sendResponse(new JsonResponse(array(
    'html' => $temp->__toString(),
)));

Editoval geosup (16. 6. 2011 9:57)

bojovyletoun
Člen | 667
+
0
-

chyba 500 znamená, že je potřeba zapnout laděnku a podívat se na chybu.
Jinak myslím, že to, čeho chceš dosáhnout výše, by šlo nějakým způsobem dosáhnout efektněji, jen nevím jak.(nástřel $this->payload->html=(string)$this->template;$this->sendPayload();)

geosup
Člen | 16
+
0
-

bojovyletoun napsal(a):

chyba 500 znamená, že je potřeba zapnout laděnku a podívat se na chybu.
Jinak myslím, že to, čeho chceš dosáhnout výše, by šlo nějakým způsobem dosáhnout efektněji, jen nevím jak.(nástřel $this->payload->html=(string)$this->template;$this->sendPayload();)

no ladenku sazmorejme zapnutou mam… ale vzhledem k tomu, ze tenhle kod se vykonava ajaxove, tak se ladenka vubec nezobrazi…

je nejaka moznost, jak debugovat ajaxove volani v nette ?

Editoval geosup (16. 6. 2011 13:34)

geosup
Člen | 16
+
0
-

nikdo nic ? :(

Ondřej Mirtes
Člen | 1536
+
0
-

Nette podporuje Firelogger.

geosup
Člen | 16
+
0
-

tak Firelogger mi hlasi tohle:

Nette\MemberAccessException: Call to undefined method Nette\Latte\Parser::__invoke(). in …\Nette\common\ObjectMixin.php:72

bojovyletoun
Člen | 667
+
0
-
$temp->registerFilter($latte /* Engine, nikoli Parser*/);
geosup
Člen | 16
+
0
-

bojovyletoun napsal(a):

$temp->registerFilter($latte /* Engine, nikoli Parser*/);

dekuji Ti, o Veliky :)