![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 24 Pomógł: 0 Dołączył: 8.07.2006 Ostrzeżenie: (0%) ![]() ![]() |
Witam
Moze najpierw przedstawie ogolny schemat dzialania mojego systemu. - Fasade stanowi FrontController - FrontController tworzy instancje obiektow ResponseContext, RequestContext - FrontController korzysta z pomocy ApplicationController - ApllicationController wybiera z zadania modul i akcje do wykonania - Mapper akcji parsuje plik XML i zwraca dane dt. lancuchow akcji, widokow dla poszczegolnych rezultatow wykonania danej akcji itd. - ApllicationController korzysta z mappera akcji i udostepnia konrolerowi informacje o lancuchach akcji i widokach - FrontController wykonuje w petli lancuchy akcji na danych modulach udostepniajac im kontekst Request i Response, a nastepnie wyswietla widok I teraz moje pytanie. Chce miec mozliwosc generowania listy newsow w postaci xhtml, rss, pdf itd., a wiec nie chce na sztywno deklarowac, ze np. widok musi byc realizowany przez Smarty. Chce jakos zorganizowac wybor wyjscia w trakcie dzialania aplikacji. Jak byscie rozwiazali ten problem? Wymyslilem, ze nieglupim rozwiazaniem byloby, aby zajal sie tym mapper akcji. W tym przypadku musialbym deklarowac w pliku XML typ wyjscia np.:
FrontController mialby korzystac z fabryki widokow, tworzyc widok typu zdefiniowanego w akcji (zakladajc ze fabryka widokow zwraca system widokow z zaimplementowanym interface'em View, aby wymusic istnienie metody display)
Myslicie, ze jest sens bawic sie w cos takiego, czy lepiej zrobic rozpoznawanie typu widoku na podstawie rozszerzenia pliku wlasnie w fabryce widokow? A moze macie zupelnie inne rozwiazanie? Ten post edytował Helios 1.11.2007, 00:36:03 |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Moderatorzy Postów: 4 465 Pomógł: 137 Dołączył: 26.03.2004 Skąd: Gorzów Wlkp. ![]() |
@Helios - w końcu spotykam osobę, która myśli podobnie do mnie ;p. Mój system działa bardzo podobnie.
Przyjąłem, że typ wyjścia jest określany poprzez parametr w URL. Np. http://host.pl/module/action Domyślnie przyjmie, że ma wygenerować stronę www, z nagłówkami, sekcją meta itp. Z kolei to samo żądanie, ale... http://host.pl/module/action/output_xml Wygeneruje plik XML. Jeszcze inaczej http://host.pl/module/action/ajax_yes Może niezbyt to ładnie wygląda, ale system wie, ze jest to żądanie httpRequest, przy którym nie musi generować calego dokumentu (x)html, a jedynie jego część. Uzyskuję w ten sposób system w którym warstwa widoku działa wg. wzorca 2 Step View, ale: o ile dla zwykłych reqestów widok jest efektem złączenia wielu widoków w jeden, to w przypadku ajaxa - wysylany jest tylko "mały widok" jednej akcji.
Wszelkie próby określania z góry (w np. XML) jaki output powinna dać akcja są moim skazane na porażkę, jeśli chcesz jednoczesnie utrzymać maksymalną elesytyczność systemu. Nawet logiczne jest, że to użytkownik powinien określać, w jakiej formie chce otrzymać odpowiedź. Pozdrawiam. |
|
|
![]() ![]() |
![]() |
Aktualny czas: 14.10.2025 - 23:13 |