Generování PDF – FileTemplate is deprecated v Nette 2.4

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

Ahoj, v jednom mém projektu jsem generoval PDF (pomocí mPDF knihovny) takto:

$tpl = new \Nette\Templating\FileTemplate(dirname(__DIR__) . '/templates/TestResult/testResultPDF.latte');
$tpl->registerFilter(new \Latte\Engine);
$tpl->registerHelperLoader('\Nette\Templating\Helpers::loader');
//plneni sablony:
$tpl->var1
...
$tpl->varX
...
//generovani PDF
$pdf = new \mPDF('', 'A4', 10, 'arial');
$pdf->ignore_invalid_utf8 = true;
$pdf->WriteHTML($tpl);

Tohle fungovalo, ale po přechodu na Nette 2.4 dostávám chybu User Deprecated Nette\Templating\FileTemplate is deprecated. (a tedy asi bude deprecated i registerFilter a registerHelperLoader).

Jak to řešit v nette 2.4? Děkuji moc za radu…

Michal Hlávka
Člen | 190
+
0
-

zkus

$latte = new \Latte\Engine;
$tpl= new \Nette\Bridges\ApplicationLatte\Template($latte);

na filter použij metodu addFilter(),

Jiří Nápravník
Člen | 710
+
+4
-

Včera jsem řešil to same.

$template = $this->templateFactory->createTemplate()
			->setFile(__DIR__ . '/../../AdminModule/Presenters/templates/Invoice/invoice.latte');

v $this->templateFactory je instance Nette\Application\UI\ITemplateFactory, kterou si injectnes a filtry by tam meli byt stejne, jako mas v sablonach

Editoval Jiří Nápravník (14. 9. 2016 10:59)

n.u.r.v.
Člen | 485
+
0
-

@JiříNápravník díky – vypadá to že to funguje…

ViPEr*CZ*
Člen | 818
+
0
-

>

v $this->templateFactory je instance Nette\Application\UI\ITemplateFactory, kterou si injectnes a filtry by tam meli byt stejne, jako mas v sablonach

No ale pokud se na to dívám, tak se furt pohybujeme v Presenterech? Proč nepoužijete klasicky render metodu a $this->getTemplate() ? Pokud by šlo třeba o CLI command, pak to chápu. ;-)

Jiří Nápravník
Člen | 710
+
0
-

@ViPEr*CZ* ja to nemám v presenteru, ale v jedné fasade