Je možné získat v presenteru HTML ze šablony pro další použití?

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

Ahoj,

potřeboval bych si vytvořit šablonu, která by se nezobrazovala uživateli, ale která by sloužila pro přípravu vzhledu tvořeného dokumentu PDF.
Představuji si to tak, že si vytvořím šablonu, nějaká action ji naplní daty a na konci si z ní vytáhne HTML kód, který pak předá ve formě stringu funkci, která generuje PDF.

Je nějak možné toto udělat?

Díky za odpovědi

worsik
Člen | 40
+
0
-

Nějak jsem z toho nepochopil, kde vezmu ty HTML data…

dejme tomu, ze mam jednoduchy presenter a action

<?php
public function renderDefault()
{
   $this->template->rows = dibi::query("SELECT * FROM table)->fetchAll();

   $html = $this->__FunkceKterouHledam();
}
?>

a šablonu default.phtml

<?php
{block content}
<table n:if="rows">
{foreach $rows as $row}
  {foreach $row as $key => $val}
   <tr>
      <th>{$key}</th>
      <td>{$val}</td>
   </tr>
   {/foreach}
{/foreach}
</table>
?>

Existuje jednoduchy zpusob, jak v action renderDefault() naplnit promennou $html?
Zbytek už s TCPDF zvládnu, ale potřebuji dostat HTML data z již naplněné šablony a tento postup není popsán v žádném příspěvku z toho odkazu…

worsik
Člen | 40
+
0
-

Zkusil jsem takovýto postup:

<?php
public function renderDefault()
{
$this->template->nadpis = "Nadpis ze šablony";

$html = $this->createTemplate()->setFile(APP_DIR."/templates/Homepage/default.phtml")->__toString();
}
?>

a šablonu

<?php
{block content}
<h1>{$nadpis}</h1>
?>

A vyhodilo mi to chybu Undefined variable: nadpis

Když dám nadpis napevno do šablony, tak vše funguje správně, ale neplní to účel, protože chci šablonu naplnit daty a nmít ji statickou.

jasir
Člen | 746
+
0
-

worsik napsal(a):

Zkusil jsem takovýto postup:

Zkus takhle

<?php
public function renderDefault()
{
 $this->template->nadpis = "Nadpis ze šablony";
 $this->template->setFile(APP_DIR."/templates/Homepage/default.phtml");
 $html = (string) $this->template;
}
?>
worsik
Člen | 40
+
0
-

Perfektní, tohle funguje :o)

Díky