Rozložení aplikace na více template

Rndoom04
Člen | 72
+
0
-

Zdravím všechny programátory,
snažím se rozdělit aplikaci na více templatů (jedno jádro a více vzhledů).

Mám strukturu
App/Presenters a v ní NecoPresenter.php a adresář templates. V adresáři templates pak mám adresáře template1 a template2. V nich už potom klasické rozdělení @layout.latte vč. adresáře Neco a v něm default.latte.

App
	- Presenters
		- templates
			- template1
				- @layout.latte
				- Neco
					- Default.latte
			- template2
				- Neco
					- Default.latte
		- BasePresenter.php
		- NecoPresenter.php

A stále se mi nedaří namapovat správný template. Hlásí mi to:

Page not found. Missing template '.../app/Presenters/templates/Neco/default.latte'

Nedaří se mi nastavit tu cestu. Do BasePresenteru do beforeRender jsem zkoušel dávat

$path = __DIR__.'/templates/template1/@layout.latte';
$this->setLayout($path);

Pomohl by mi tu někdo jak to udělat funkční? Děkuji moc za pomoc. :)

Editoval Rndoom04 (28. 6. 2020 15:48)

MajklNajt
Člen | 470
+
0
-

ahoj, musíš sa v presenteri trošku pohrať s preťažením metódy formatLayoutTemplateFilesformatTemplateFiles

Šaman
Člen | 2632
+
+1
-

Konkrétně třeba takhle. Tohle rozšiřuje místa, kde mohou být šablony. Já je ukládám vždy do stejného adresáře, jako je jejich presenter, protože změna v jednom často vyžaduje změnu i v druhém.
Tohle přidává ještě druhé místo – podadresář templates ve složce kde je jejich presenter.
Podporuje to i ten tvar presenter.view.latte, který se teď řešil v jiném vláknu.

Layout se pak dohledává odspodu a vezme se první, který se najde. Tedy pokud máš klasicky jeden @layout.latte na úrovni BasePresenteru, ale chceš pro nějaký modul vlasní layout, tak na úrovni ModuleBasePresenter bude jeho layout a použije se.

P.S. A toho beforeRender() si nevšímej, to se tohohle netýká.

Editoval Šaman (28. 6. 2020 17:44)

Rndoom04
Člen | 72
+
0
-

Děkuji za odpovědi. To je to vážně takhle složité? To se nedá nastavit podobně jako mapování presenterů Front/End? Že bych jen aplikaci řekl: „Hele, hledej tady v tom adresáři.“?

Šaman
Člen | 2632
+
+1
-

Však přesně to tohle dělá. Ta metoda formatTemplateFiles vraci seznam adres k souborům, které se postupně projdou a vezme se první, který se najde. Jestli nechceš zachovávat zpětnou kompatibilitu, tak si tam natvrdo můžeš nastavit jednu vlastní cestu.

Rndoom04
Člen | 72
+
0
-

Šaman napsal(a):

Však přesně to tohle dělá. Ta metoda formatTemplateFiles vraci seznam adres k souborům, které se postupně projdou a vezme se první, který se najde. Jestli nechceš zachovávat zpětnou kompatibilitu, tak si tam natvrdo můžeš nastavit jednu vlastní cestu.

Super! Funguje mi to. Děkuju moc za ochotu a pomoc. :)