Adresářová struktura šablon a setLayout

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
mara11
Člen | 42
+
0
-

Jsem v presenteru a chci dát setLayout(__DIR__ . /templates/..)
Výsledek: Layout not found. Missing template '…\xampp\htdocs\WebFrontend\app\presenters\templates\…
Jak jí správně nastavit, když __DIR__ vrací i app/presenters, když vlastně chci app/templates?

Chci udělat složitější adresářovou strukturu pro daný presenter
Klasicky by bylo

  • templates
    • Error
    • Page
      • default.latte
      • dalsi.latte

    Ale já bych potřeboval něco jako

  • templates
    • Error
    • Page
      • slozka
        • pages.latte
      • @layout.latte

    Tak aby tahle @layout.latte fungovala pro pages, stejně jako to funguje běžně,

    jakoby chci o jednu složku víc zanořit adresářovou strukturu

    Jak nastavit router, aby po zadání potřebné adresy do url localhost/projekt/cz/page/slozka/pages se mi zobrazila daná šablona?

Souvisí to s první otázkou, chci dát setLayout(potřebná cesta k šabloně pages.latte), případně jak to mám vůbec celé udělat… :-)

Odoaker
Člen | 11
+
0
-

Nevím, jestli to de nějak líp, ale adresářovou strukturu sem si měnil v Nette\Application\UI\Presenter
https://api.nette.org/…ter.php.html#…

jestli jen pro jeden presenter, tak __DIR__ . ‚/../templates/…‘ nejde?

Editoval Odoaker (17. 3. 2015 23:23)

mara11
Člen | 42
+
0
-

Moc jsem nepochopil, proč jsi mi poslal to jak vypadá metoda v defaultním presenteru v nette, nenašel jsem rozdíl mezi tím, jak vypadá v nette a tím cos mi poslal :-D __DIR__ . /templates mě bohužel přesměrovává na App/Presenters/Templates a ne App/Templates

Etch
Člen | 403
+
0
-

__DIR__ je konstanta obsahující cestu k adresáři aktuálního souboru, takže je celkem logické, že ti to vede do App/Presenters.

Layouty se defaultně dohledávají v App/Templates a pokud vím tak i v App/Templates/PresenterName

V tvém případě by tedy setLayout mělo být naprosto zbytečné (Layout != šablona). Pro presenter „Page“ se použije layout z adresáře App/Templates/Page a pro ostatní se použije defaultní layout z App/Templates.

Ty potřebuješ přenastavovat view

/** Pro šablonu App/Templates/Page/slozka/pages.latte*/
$this->view = 'slozka/pages'

Editoval Etch (17. 3. 2015 23:36)

Odoaker
Člen | 11
+
0
-

Tam si můžeš změnit defaultní vyhledávání layoutu nebo se minimálně kouknout, jak to nette čte. Rozdíl tam hledat nemáš. Znova… pokud to chceš jen pro jeden případ, tak __DIR__ . ‚/../templates/blah‘ nebo ještě dirname(__DIR__) . ‚/templates/blah‘.

Editoval Odoaker (17. 3. 2015 23:24)

Etch
Člen | 403
+
0
-

@Odoaker Tam je hlavně problém, že on vůbec nepotřebuje nastavit layout, ale chce přenastavit view…

mara11
Člen | 42
+
0
-

Jsi skvělej, ten řádek mi moc pomohl! :-)