PHP týden PHP týden
Pouze tento týden až 80% sleva na PHP, Nette, Symfony!
Aprílový black friday tě nenechá v klidu! Až 80 % prémiového obsahu zdarma. 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  +2 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.