Generování PDF – FileTemplate is deprecated v Nette 2.4
- n.u.r.v.
- Člen | 485
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
zkus
$latte = new \Latte\Engine;
$tpl= new \Nette\Bridges\ApplicationLatte\Template($latte);
na filter použij metodu addFilter()
,
- Jiří Nápravník
- Člen | 710
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)
- ViPEr*CZ*
- Člen | 818
>
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. ;-)