-
-
Notifications
You must be signed in to change notification settings - Fork 283
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Showing
2 changed files
with
81 additions
and
34 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -37,29 +37,75 @@ Ta definuje blok `content`, který se vloží na místo `{include content}` v la | |
Hledání šablon | ||
-------------- | ||
|
||
Cestu k šablonám odvodí presenter podle jednoduché logiky. Zkusí, zda existuje jeden z těchto souborů umístěných relativně od adresáře s třídou presenteru, kde `<Presenter>` je název aktuálního presenteru a `<view>` je název aktuální akce: | ||
Nemusíte v presenterech uvádět, jaká šablona se má vykreslit, framework cestu odvodí sám a ušetří vám psaní. | ||
|
||
- `templates/<Presenter>/<view>.latte` | ||
- `templates/<Presenter>.<view>.latte` | ||
Pokud používáte adresářovou strukturu, kde každý presenter má vlastní adresář, jednodušše umístěte šablonu do tohoto adresáře pod jménem akce (resp. view), tj. pro akci `default` použijte šablonu `default.latte`: | ||
|
||
Pokud šablonu nenajde, zkusí hledat ještě v adresáři `templates` o úroveň výš, tj. na stejné úrovni, jako je adresář s třídou presenteru. | ||
/--pre | ||
app/ | ||
└── UI/ | ||
└── Home/ | ||
├── HomePresenter.php | ||
└── <b>default.latte</b> | ||
\-- | ||
|
||
Pokud ani tam šablonu nenajde, je odpovědí [chyba 404|presenters#Chyba 404 a spol.]. | ||
Pokud používáte strukturu, kde jsou společně presentery v jednom adresáři a šablony ve složce `templates`, uložte ji buď do souboru `<Presenter>.<view>.latte` nebo `<Presenter>/<view>.latte`: | ||
|
||
Můžete také změnit view pomocí `$this->setView('jineView')`. Nebo místo dohledávání přímo určit jméno souboru se šablonou pomocí `$this->template->setFile('/path/to/template.latte')`. | ||
/--pre | ||
app/ | ||
└── Presenters/ | ||
├── HomePresenter.php | ||
└── templates/ | ||
├── <b>Home.default.latte</b> ← 1. varianta | ||
└── <b>Home/</b> | ||
└── <b>default.latte</b> ← 2. varianta | ||
\-- | ||
|
||
Adresář `templates` může být umístěn také o úroveň výš, tj. na stejné úrovni, jako je adresář s třídami presenterů. | ||
|
||
Pokud se šablona nenajde, presenter odpoví [chybou 404 - page not found|presenters#Chyba 404 a spol.]. | ||
|
||
View změníte pomocí `$this->setView('jineView')`. Také lze přímo určit soubor se šablonou pomocí `$this->template->setFile('/path/to/template.latte')`. | ||
|
||
.[note] | ||
Soubory, kde se dohledávají šablony, lze změnit překrytím metody [formatTemplateFiles() |api:Nette\Application\UI\Presenter::formatTemplateFiles()], která vrací pole možných názvů souborů. | ||
|
||
Layout se očekává v těchto souborech: | ||
|
||
- `templates/<Presenter>/@<layout>.latte` | ||
- `templates/<Presenter>.@<layout>.latte` | ||
- `templates/@<layout>.latte` layout společný pro více presenterů | ||
Hledání šablony layoutu | ||
------- | ||
|
||
Nette také automaticky dohledává soubor s layoutem. | ||
|
||
Pokud používáte adresářovou strukturu, kde každý presenter má vlastní adresář, umístěte layout buď do složky s presenterem, pokud je specifický jen pro něj, nebo o úroveň výš, pokud je společný pro více presenterů: | ||
|
||
/--pre | ||
app/ | ||
└── UI/ | ||
├── <b>@layout.latte</b> ← společný layout | ||
└── Home/ | ||
├── <b>@layout.latte</b> ← jen pro presenter Home | ||
├── HomePresenter.php | ||
└── default.latte | ||
\-- | ||
|
||
Pokud používáte strukturu, kde jsou společně presentery v jednom adresáři a šablony ve složce `templates`, bude se layout očekávát tady: | ||
|
||
/--pre | ||
app/ | ||
└── Presenters/ | ||
├── HomePresenter.php | ||
└── templates/ | ||
├── <b>@layout.latte</b> ← společný layout | ||
├── <b>[email protected]</b> ← jen pro Home, 1. varianta | ||
└── <b>Home/</b> | ||
└── <b>@layout.latte</b> ← jen pro Home, 2. varianta | ||
\-- | ||
|
||
Pokud se presenter nachází v [modulech|modules], bude se dohledávat i o další adresářové úrovně výš, podle zanoření modulu. | ||
|
||
Kde `<Presenter>` je název aktuálního presenteru a `<layout>` je název layoutu, což je standardně `'layout'`. Název lze změnit pomocí `$this->setLayout('jinyLayout')`, takže se budou zkoušet soubory `@jinyLayout.latte`. | ||
Název layoutu lze změnit pomocí `$this->setLayout('layoutAdmin')` a pak se bude očekávat v souboru `@layoutAdmin.latte`. Také lze přímo určit soubor se šablonou layoutu pomocí `$this->setLayout('/path/to/template.latte')`. | ||
|
||
Můžete také přímo určit jméno souboru se šablonou layoutu pomocí `$this->setLayout('/path/to/template.latte')`. Pomocí `$this->setLayout(false)` se dohledávání layoutu vypne. | ||
Pomocí `$this->setLayout(false)` nebo značky `{layout none}` uvnitř šablony se dohledávání layoutu vypne. | ||
|
||
.[note] | ||
Soubory, kde se dohledávají šablony layoutu, lze změnit překrytím metody [formatLayoutTemplateFiles() |api:Nette\Application\UI\Presenter::formatLayoutTemplateFiles()], která vrací pole možných názvů souborů. | ||
|