Render šablony do proměnné v Nette 0.9.1

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

Ahoj, měl bych speciální dotaz.
Dostal jsem se k projektu vytvořeném v Nette v. 0.9.1 pro php 5.2 Bylo by potřeba do proměnné v presenteru dostat vyrenderovanou šablonu (důvodem je následný export do pdf pomocí mPdf). Otázkou je, zda-li to jde. :)

Bohužel z jistých důvodů nelze Nette upgradovat na vyšší verzi, takže potřebuji řešení pro 0.9.1.

Zkoušel jsem neco na zpusob…

public function renderClanek()
{
 $this->temp = new Template();
 $this->temp->setFile(dirname(__FILE__) . '/../templates/Clanek/detail.phtml');
 $output = (string) $this->temp->render();
}

Ale to nejde. Je potřeba nějak volat http request/response?

Díky moc! :)

ViPEr*CZ*
Člen | 818
+
0
-
$output = (string) $this->temp;

Takhle to nejde?

Bohosu
Člen | 24
+
0
-

Jde, ale nevyrenderuje mi to hodnoty v promennych. Potřeboval bych, aby místo {$variable} se vypsala konkrétní hodnota. Je to možné? :) Děkuju :)

jsvelta
Člen | 39
+
0
-

Bohosu napsal(a):

Jde, ale nevyrenderuje mi to hodnoty v promennych.

A nemal by si ich v objekte $this->temp najprv nastaviť?

Niečo ako $this->temp->variable = ‚value‘; si skúšal?

vvoody
Člen | 910
+
0
-

{$variable} je latte, trieda Template latte nepozná, inými slovami musíš pridať filter latte. Ako? Neviem. ;)

edit: malá nápoveda https://api.nette.org/…rol.php.html#64

Editoval vvoody (21. 10. 2013 17:27)

Majkl578
Moderator | 1364
+
0
-

Musíš registrovat Latte filter, viz dokumentace 0.9.

$template->registerFilter(new LatteFilter);
ViPEr*CZ*
Člen | 818
+
0
-

A nebo místo $this->temp = new Template(); použít template z presenteru ($this->template), kde latte filtr registrovaný už bude.

Bohosu
Člen | 24
+
0
-

Děkuju vám všem :) Původně jsem právě předpokládal, že se šablona musí renderovat metodou render(). Už vše funguje ;) Díky moc!