Předgenerování šablony pro presenter
- Martin Mates
- Člen | 179
Mám jednu latte šablonu, pro kterou se poměrně komplikovaně dávají
dohromady data. Nazvěme ji třeba sablona.latte
. V aplikaci je
potřeba jí vykreslit na více místech i jí pak např. poslat e-mailem.
Rád bych měl extra metodu, která tuto šablonu připraví a vrátí. To
bych chtěl pak použít např. v metodě renderNeco()
v presenteru.
Zjednodušený kód:
public function pripravSablonu() {
$template = $this->createTemplate()->setFile('sablona.latte');
$template->registerFilter(new Nette\Latte\Engine);
return $template;
}
public function renderNeco() {
$this->setLayout(null);
//??? Tady bych potreboval pouzit a vykreslit predprivaneou sablonu
//$this->template->setFile($this->pripravSablonu()); ???
//$this->template->setSource($this->pripravSablonu()); ???
}
Nevím, jak metodě renderNeco() strčit tu předpřipravenou šablonu místo FileTemplate, který to hledá v nějaké složce. Nějaké nápady? Díky moc
- jtousek
- Člen | 951
Vymýšlíš to zbytečně složitě, původní FileTemplate můžeš klidně použít jen nastavíš jinou šablonu.
$this->template->setFile('sablona.latte');
//alternativně ve startup nebo v action
$this->setView('sablona');
Volil bych to druhé, potom si ještě můžeš napsat:
public function renderSablona() {
$this->template->... //předání proměnných šabloně hezky na jednom místě
}
Editoval jtousek (24. 5. 2012 15:43)
- Martin Mates
- Člen | 179
jtousek napsal(a):
Vymýšlíš to zbytečně složitě, původní FileTemplate můžeš klidně použít jen nastavíš jinou šablonu.
$this->template->setFile('sablona.latte'); //alternativně ve startup nebo v action $this->setView('sablona');
Volil bych to druhé, potom si ještě můžeš napsat:
public function renderSablona() { $this->template->... //předání proměnných šabloně hezky na jednom místě }
Problém je v tom, že to není jen v rámci jednotlivých View. Jednou se ta šablona jen vygeneruje a pošle e-mailem a jednou se použije ve view. Dá se to nějak udělat, aby to bylo společné?