Navrh modularni aplikace – spolecny @layout
- Ajax
- Člen | 59
Ahoj vsem!
Potrebuju nakopnout, poradit. Potrebuju napsat modularni system (v budoucnu by mel byt vycet modulu na ruznych serverech ruzny podle potreb dane instance), ktery bude mit spolecne jadro (autentizace a autorizace, vzhled, zakladni funkce). Par dnu jsem se prodiral trema (pro me) novinkama najednou (MVC, nette, OOP) a dohnalo me to do situace, kdy se bojim neco zacit. :) Ne, vazne, potrebuju nejakou obecnou radu jak si usporadat slozky, presentery, layouty,.. Nejaka doporuceni?
Prvni vec, na kterou jsem narazil. Je mozne mit jeden layout a par presenteru a modelu spolecne pro vsechny moduy? Jak potom nastavit routy, adresarovou strukturu a tak..
PS: Napsal jsem toho uz hodne, ale bez OOP, frameworku a MVC. :) Proto nechci udeat hned na zacatku spatny krok a ptam se na radu. Dik vsem..
Editoval Ajax (20. 3. 2011 22:07)
- Podbor
- Člen | 19
Já bych k tomuto tématu s dovolením připojil svou otázku. S Nette
začínám a zatím jsem nikde nenašel, jak udělat to, aby nějaká šablona
(např. Login/default.latte) nedědila, nebo se nevkládala do defaultní
šablony "@layout.latte", ve které mám základní kostru stránky,
dynamicky natahané menu z databáze atp. Chtěl bych zkrátka, aby ta šablona
login vypadala úplně jinak než zbytek stránek, které budou dostupné po
přihlášení.
Používám Nette 2.0 pro PHP 5.3.
- Jan Tvrdík
- Nette guru | 2595
Dej do šablony {layout none}
nebo nastav v presenteru
$this->layout = FALSE
.
- Droid
- Člen | 92
Podbor napsal(a):
Já bych k tomuto tématu s dovolením připojil svou otázku. S Nette začínám a zatím jsem nikde nenašel, jak udělat to, aby nějaká šablona (např. Login/default.latte) nedědila, nebo se nevkládala do defaultní šablony "@layout.latte", ve které mám základní kostru stránky, dynamicky natahané menu z databáze atp. Chtěl bych zkrátka, aby ta šablona login vypadala úplně jinak než zbytek stránek, které budou dostupné po přihlášení.
Používám Nette 2.0 pro PHP 5.3.
Já login page řešil tak, že jsem vše naházel do Login/default.latte – prostě žádná dědičnost. Lepší řešení bude vytvořit @layout2.latte s blokem třeba #login a pak ten blok definovat v Login/default.latte..Každopádně lepší řešení také uvítám :-)
EDIT: Srigiho řešení
Editoval Droid (21. 3. 2011 17:01)
- Ajax
- Člen | 59
22 napsal(a):
a co je v tom za problém? Společný šablony a presentery necháš v rootu a přes dědičnost šablon
{extends '../@someLayout.latte'}
si ho načteš…třeba
No dobra, rekneme, ze to chapu. Ale co s routama? Narazil jsem treba na
problem, ze potrebuju mit v app/AdminModule/templates/login.latte
odkaz na prezeneter app/presenters/SomePresenter.php
. Pokud tam dam
obycejne {link SomePresenter:default}
tak mi tam nette pridava
automaticky aktualni modul. Coz nechci a spolecne veci nemaji modul (jsou
v root). Co jsem nepochytil?
- Jan Tvrdík
- Nette guru | 2595
Odkaz můžeš napsat absolutně (https://doc.nette.org/…ified-action),
tj. {link :SomePresenter:default}
.
- Ajax
- Člen | 59
Ahoj vsem, mam dalsi dotaz. Potrebuju rict, jestli se vydavam spravne a
pripadne se dotazat na dalsi postup. Cela aplikace ma jeden layout, ve kterm je
(mimo jine) topmenu. Kazdy modul ma sve submenu (menu patrici jen k modulu)
v default presenteru a sablone (?? dobre ??). A kazdy modul ma dalsi
presentery na obsluhu submenu, napriklad modul admin ma presenter Users pro
pridavani a editaci uzivatelu (jedna polozka v menu) (?? dobre ??). A pokud je
tento koncept spravne, jak zaridit aby se mi stranka poskladala z
@layout
(topmenu), modul:deafult
(submenu – to
funguje) a modul:presenter:akce
– toto uz mi nejde, vlozi se jen
vysledek akce, a ja potrebuju default preseneter (submenu) + vysledek akce. Je
spatne koncept, nebo me znalosti nette?
- srigi
- Nette Blogger | 558
Takto to nefunguje. Jeden request nemozu obsluhovat dva moduly. To co hladas su vykreslitelne komponenty. Tie uz sa takto spravat vedia. Dokonca kazda komponenta je zaroven kontainerom dalsich komponent.
Spravis si teda komponentu mainmenu
a aktualny presenter do nej
nahadze polozky submenu. Nasledne napises nejaku logiku, ktora komponentu
rekurzivne vykresli.