IT rekvalifikace s garancí práce. Seniorní programátoři vydělávají až 160 000 Kč/měsíc a rekvalifikace je prvním krokem. Zjisti, jak na to!
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.
Avatar
Ondřej Pech
Člen
Avatar
Ondřej Pech:13.9.2018 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.9.2018 10:06
Avatar
Roman Havránek:24.9.2018 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.9.2018 22:21
sleep();
Avatar
Mirek Slouka
Člen
Avatar
Odpovídá na Ondřej Pech
Mirek Slouka:26.9.2018 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.9.2018 7:14
Nahoru Odpovědět
26.9.2018 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.