Chci geek triko! Chci geek triko!
Extra 10 % bodů navíc a tričko zdarma při zadání kódu "TRIKO10"

Diskuze: Dědičnost šablon v různých modulech

PHP Nette Framework Nette framework Dědičnost šablon v různých modulech

Aktivity (1)
Avatar
Ondřej Pech
Člen
Avatar
Ondřej Pech:13. září 10:06

Ahoj,
přemýšlím nad nejlepším řešením problému. A nevím jak to realizovat v nette.
Mám app s několika moduly:

- AdminModule
        - presenters
                -templates
                        @layout.latte
        - CzechModule
                -presenters
                        -templates
                                - @navigation.latte
        - PolandModule
                -presenters
                        -templates
                                - @navigation.latte
        - ...

A chtěl bych v @layout.latte includovat šablonu @navigation.latte ale toho konkrétního podmodulu.

Teoreticky jsem si myslel, že to bude fungovat, že napíšu {include @navigation.latte} v layoutu. Že se načte navigace ze složky šablon aktuálního moudulu (protože tam je ten aktuální presenter). Ale nette hledá šablonu v modulu Admin (tam kde je layout.latte)

Můj dotaz zní. Jak se odkázat na šablonu aktuálního modulu? Tzn. Pokud budu v submodulu Czech tak načíst navigation.latte ze šablon podmodulu Czech a tak dále :)

 
Odpovědět 13. září 10:06
Avatar
Roman Havránek:24. září 22:21

Ahoj,

myslíš nějak takto? :)
PS: musí se definovat v každém presenteru :)

public function renderDefault(){
// cesta k šabloně kterou chci renderovat v default.latte
    $this->setLayout('layoutAdmin');
    }
Nahoru Odpovědět 24. září 22:21
sleep();
Avatar
Mirek Slouka
Člen
Avatar
Odpovídá na Ondřej Pech
Mirek Slouka:26. září 7:14

Je vice možností jak to udělat. Nicméně bych použil tohle:

abstract class AdminBasePresenter extends BasePresenter
{
    protected function beforeRender()
    {
        parent::beforeRender();
        $this->setLayout('layoutAdmin');
    }
}

Každému presentetu přidáš protected metodu beforeRender, kde nastavíš layout.
Nebo:

<!-- use adminLayout.latte -->
{layout "../@layoutAdmin.latte"}

Každé "podstránce" definuješ, jaký layout má používat.

Kód jsem vzal přímo z oficiální dokumentace Nette Frameworku.

Editováno 26. září 7:14
Nahoru Odpovědět  +2 26. září 7:14
I can explain it to you, but I can't understand it for you.
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 3 zpráv z 3.