$this->template->setFile(‚file.phtml‘) deaktivuje nastavení layoutu
Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
- Jan Tvrdík
- Nette guru | 2595
Je nějaký důvod, aby volání
$this->template->setFile('file.phtml')
deaktivovalo
nastavení layoutu?
Nebylo by logičtější upravit kód takto?:
if ($template instanceof /*Nette\Templates\*/IFileTemplate) {
// content template
if (!$template->getFile()) {
$files = $this->formatTemplateFiles($this->getName(), $this->view);
foreach ($files as $file) {
if (is_file($file)) {
$template->setFile($file);
break;
}
}
if (!$template->getFile()) {
$file = str_replace(Environment::getVariable('templatesDir'), "\xE2\x80\xA6", reset($files));
throw new BadRequestException("Page not found. Missing template '$file'.");
}
}
// layout template
if ($this->layout) {
foreach ($this->formatLayoutTemplateFiles($this->getName(), $this->layout) as $file) {
if (is_file($file)) {
if ($this->oldLayoutMode) {
$template->content = clone $template;
$template->setFile($file);
} else {
$template->layout = $template->_extends = $file;
}
break;
}
}
}
}
- David Grudl
- Nette Core | 8228
Když použiješ setFile, tak se předpokládá, že si soubor a layout řešíš nějak po svém.
- Jan Tvrdík
- Nette guru | 2595
Přesto si myslím, že mnou navrhnutá změna představuje
logičtější chování, protože pakliže mám nastaveno
$this->layout
, tak očekávám, že bude fungovat. Pokud layout
z nějakého důvodu nechci, tak můžu vždycky zavolat
$this->layout = FALSE
. Rozhodnutí je samozřejmě na
tobě :)