FileTemplate: nastavení rodičovské šablony
- Eda
- Backer | 220
Zdarec.
Řekněme, že se nacházím v nějakém presenteru ve funkci
createTemplate()
.
protected function createTemplate($class = NULL)
{
$template = parent::createTemplate($class);
return $template;
}
Mám tedy instanci FileTemplate v $template
. Nyní bych chtěl
na tomto místě nastavit šabloně layout, tzn. šablonu, ze které bude tato
právě vytvořená šablona dědit. Jde to nějak přímo?
Zatím to řeším takto:
protected function createTemplate($class = NULL)
{
$template = parent::createTemplate($class);
$template->extends = $this->formatTemplateParent(); // moje funkce, která vrátí cestu k latte souboru
return $template;
}
A v šabloně pak:
{extends $extends}
{block content}
...
Funkci formatLayoutTemplateFiles() nebo případné nastavení layoutu Presenteru k tomu, co chci udělat, využít nemůžu, protože tam už je opravdu nastavení layoutu stránky. A já chci jen říct právě vytvářené šabloně např. „poděď výchozí šablonu akce“, nikoliv použít jiný layout celé stránky.
S tímto problémem se pojí další drobnost, která už mne ale tolik
nepálí, nicméně, kdyby měl někdo její řešení, nezlobil bych se :-) Jde
o to, že když už se mi podaří nastavit extends
v mé
šabloně, sice podědím výchozí šablonu
akce, ale tím pádem
už se nepoužije žádný layout. Tzn. musím na začátek výchozí šablony
uvést {extends auto}
, aby se layout použil. Nejde i tohle nějak
někde nastavit?
Z kódu, příslušných tříd, na který jsem se díval, jsem měl pocit, že zamýšlené chování udělat nepůjde. Budu ale velmi rád, když mne někdo vyvede z omylu :-)
Jen pro pořádek: používám master větev Nette z Githubu.