![]() |
![]() |
![]() ![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 18 Pomógł: 1 Dołączył: 4.09.2009 Ostrzeżenie: (0%) ![]() ![]() |
Czesc.
Zaprezentuje na przykladach: To narazie mam:
A chce:
Pierwsze rozwiazanie to oczywiste zlo. Przy okazji kazdy nowy widok (klasa Some_View) wymagalby takiej samej procedury, co przy podziale strony na osobne elementy - z uzyciem layoutu, stanowilo by spore uniedogodnienie. Jak byscie rozwiazali ten problem ? Mam kontroler frontowy, rejestr, w kontrolerze akcji mam rowniez dostep do obiektu request. Obiekt request ma dostep do nazwy kontrolera, akcji i modulu. W zendzie rozwiazane jest to na zasadzie ... pluginu. I nie do konca to pojmuje. Teoretycznie moglbym zrobic jeszcze:
... i wydedukowac sciezke do ow plikow widoku z tego, co daje mi request, ale to tez wydaje sie byc srednim rozwiazaniem. Nie chcialbym angazowac tutaj (wewnatrz Some_View) zmiennych statycznych. Powinienem ? W sumie prosilbym o przyklad jakiegos wzorca. Stosowane praktyki... Myslalem nad fabryka inicjalizowana w bootstraperze, ktora przekazywana by byla do kontrolera akcji i produkowala widoki wstrzykujac im te opcje konfiguracyjne, ale tu mam inny dylemat - gdzie ow fabryke przechowac. We froncie, a moze w rejestrze, a moze ma byc statyczna ... Bede wdzieczny za pomoc. Ten post edytował jacekkobus 19.01.2010, 22:40:10 |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 18 Pomógł: 1 Dołączył: 4.09.2009 Ostrzeżenie: (0%) ![]() ![]() |
Ok dzieki.
Z tego co widze, sciezki do plikow masz "wbite" na stale, i modyfikujesz je uzywajac danych wejsciowych z konstruktora. Tego wlasnie chce tez uniknac. Ja raczej zmierzam ku temu aby w bootraperze zdefiniowac kilka wariantow scizek, bo widoki moge chciec przelaczac (np skorki itd), a pozniej w kontrolerze akcji przelaczac sie podajac tylko nazwe zestawu. wygladalo by to tak bootstrap.php Layout::addScriptSource('default', 'application/scripts/default'); Layout::addScriptSource('bubbles', 'application/:module/scripts/bubbles'); Layout::setDefault('default'); a uzycie w Action_Controller: Layout::using('bubbles'); $view = new Some_View('stopka.phtml'); // czyta plik application/:module/scripts/bubbles/stopka.phtml Layout::using('default'); $view = new Some_View('stopka.phtml'); // czyta plik application/scripts/stopka.phtml (:module to zmienna, ktora podmieniam na nazwe aktualnego modulu...) Ogolnie troszke dziwnie Ci to wyszlo. Nie myslales, zeby np.: "addJs" wylaczyc do osobnego obiektu, helpera czy tez pluginu ? Ja mam klase Object_Header ktora rozszerza klase Some_View i ow obiekt zawiera metody addJs, addCss, setTitle itd. Wtedy robie: $strona = new Some_View('strona.phtml'); $strona->header = new Object_Header(); $strona->header->setTitle('tytul strony'); return $strona->render(); Formularze na przyklad rowniez sa u mnie rozszerzeniem klasy widoku, z tym ze zawieraja metody odpowiadajace za dodawanie pol itd... Ten post edytował jacekkobus 20.01.2010, 15:19:24 |
|
|
![]() ![]() |
![]() |
Aktualny czas: 18.10.2025 - 04:15 |