Změna struktury a nutná úprava formatTemplateFiles a formatLayoutTemplateFiles
- jarda256
- Člen | 130
Ahoj, jsem v nette poněkud nový a rozhodl jsem se dělat rozsáhlejší projekt s tím, že se budu učit za chodu. Tak prosím omluvte pokud je má otázka úplně hloupá. Předělal jsem základní strukturu App na tohle. Pochopitelně je potřeba změnit formatTemplateFiles() a formatLayoutTemplateFiles. V případě formatTemplateFiles jsem změnil a snad správně (obsah se zobrazí). Tak prosím jestli by se na to mohl někdo kouknout jestli je to opravdu dobře nebo jsem jen trefil náhodně něco použitelného. Ale v případě formatLayoutTemplateFiles nějak nechápu jak to tedy má vypadat, tak jestli by mi mohl někdo prosím ukázat jak je to správně a případně i s nějakým vysvětlením. Popřípadě to ještě je třeba při takovéto změně struktury. Předem děkuji.
app
├── modules
│ ├── Web
│ │ ├── presenters
│ │ │ ├── Default
│ │ │ │ ├── templates
│ │ │ │ │ └── default.latte
│ │ │ │ └── DefaultPresenter.php
│ │ │ └── Product
│ │ │ ├── templates
│ │ │ │ ├── default.latte
│ │ │ │ └── edit.latte
│ │ │ └── ProductPresenter.php
│ │ └── templates
│ │ └── @layout.latte
│ └── Admin
│ ├── modules
│ │ └── (more modules)
│ ├── presenters
│ │ └── Default
│ │ ├── templates
│ │ │ └── default.latte
│ │ └── DefaultPresenter.php
│ └── templates
│ └── @layout.latte
├── presenters
│ └── Base
│ └── BasePresenter.php
└── templates
└── @layout.latte
/**
* Formats layout template file names.
* @return array
*/
public function formatLayoutTemplateFiles()
{
if (preg_match('#/|\\\\#', $this->layout)) {
return [$this->layout];
}
list($module, $presenter) = Helpers::splitName($this->getName());
$layout = $this->layout ? $this->layout : 'layout';
$dir = dirname($this->getReflection()->getFileName());
$dir = is_dir("$dir/templates") ? $dir : dirname($dir);
$list = [
"$dir/templates/@$layout.latte",
"$dir/templates.@$layout.latte",
];
do {
$list[] = "$dir/templates/@$layout.latte";
$dir = dirname($dir);
} while ($dir && $module && (list($module) = Helpers::splitName($module)));
return $list;
}
/**
* Formats view template file names.
* @return array
*/
public function formatTemplateFiles()
{
list(, $presenter) = Helpers::splitName($this->getName());
$dir = dirname($this->getReflection()->getFileName());
$dir = is_dir("$dir/$presenter") ? $dir : dirname($dir);
return [
"$dir/$presenter/templates/$this->view.latte",
"$dir/$presenter/templates.$this->view.latte",
];
}
Editoval jarda256 (15. 11. 2016 19:24)
- Šaman
- Člen | 2666
- Dumpni si výsledná pole. Jsou to pole cest, na kterých se soubory šablon, resp. layoutů budou hledat.
- Je dobré na konec přidat pole z originální
parent::format…()
metody, čistě kvůli kompatibilitě, nebo když k projektu přijde někdo nový. - Naopak uvádět jak verzi s podadresářem, tak s tečkou u svých vlastních pravidel nemusíš (pokud nechceš používat obě verze).
- jarda256
- Člen | 130
Šaman napsal(a):
- Dumpni si výsledná pole. Jsou to pole cest, na kterých se soubory šablon, resp. layoutů budou hledat.
- Je dobré na konec přidat pole z originální
parent::format…()
metody, čistě kvůli kompatibilitě, nebo když k projektu přijde někdo nový.- Naopak uvádět jak verzi s podadresářem, tak s tečkou u svých vlastních pravidel nemusíš (pokud nechceš používat obě verze).
Tak to mám :) Jen by mě ještě zajímala jedna věc…díky téhle struktuře musím tedy volat způsobem $this->redirect(‚Web:Articles:Show‘) a pak mám v url localhost/sandbox/www/web.Articles/show…jde se tohoto nějak zbavit?
Editoval jarda256 (15. 11. 2016 19:55)