Ładowanie akcji oraz widoków w FW, Dyskusja |
Ładowanie akcji oraz widoków w FW, Dyskusja |
15.01.2007, 15:05:08
Post
#21
|
|
Grupa: Zarejestrowani Postów: 52 Pomógł: 0 Dołączył: 28.10.2005 Skąd: kraków Ostrzeżenie: (0%) |
Witam, zaprezentuje moje rozwiązanie tego problemu
posiadam plik konfiguracyjny bloków np:
default - są zdefiniowane domyślnie odpalane bloki i szablon który ma je wykorzystać login - jak wyżej .. z odpaleniem default nie ma problemu ( odpalany domyślnie ) ale teraz jak odpalić login otóż posiadam aliasy na rutera które definiują w sobie odpalane bloki przykład pliku konfiguracyjnego aliasów w szablonie wykorzystuje je w następujący sposób
w kontrolerze definiuje "łapanie" bloków poprzez metode setBlock() np.
i wykorzystuje je w szablonie głównym poprzez taką linijkę ... mam nadzieje że przedstawiłem to w miare zrozumiale .. PS1. moim zdaniem definiowanie odpalanych bloków w akcji jest delikatnie chybione, bo gdy chcemy wzbogacić widoko jakieś dodatkowe bloki trzeba przeszukać klasy akcji i je zmodyfikować, a trzymając to w jednym nie pogubimy się przy większych projektach .. PS2. można też zrobić pomocnika dla widoku który odpala odpowiednie akcje tj .. wtedy zabawa nie jest już tak hardkorowa z plikami konfiguracyjnymi ... ale czy jest to zgodne z MVC co o tym sądzicie .. -------------------- http://blog.widmogrod.info
KontorX – rozszeżenie bibliotek Zend Framework - http://code.google.com/p/kontorx/ KontorX – przykłady - http://kontorx.widmogrod.info Cappuccino Framework - http://wiki.widmogrod.info/cappuccino |
|
|
15.01.2007, 18:21:25
Post
#22
|
|
Grupa: Zarejestrowani Postów: 493 Pomógł: 0 Dołączył: 14.06.2003 Skąd: Tomaszów Lubelski/Rzeszów Ostrzeżenie: (0%) |
Szczerze? Nie rozumiem o czym piszesz Co masz pod pojęciem bloki. Bo dla mnie to kawałek kodu php i html umieszczane w glownym layoucie strony, raczej nie mający powiązań z akcjami.
-------------------- |
|
|
15.01.2007, 19:56:23
Post
#23
|
|
Grupa: Zarejestrowani Postów: 52 Pomógł: 0 Dołączył: 28.10.2005 Skąd: kraków Ostrzeżenie: (0%) |
u mnie bloki są wynikiem akcji ..
Po sparsowaniu xml'a (z poprzedniego postu) mam tablice, która zawiera nazwy bloków z kontrolerem i akcją do odpalenia. Wrzucam to do ActionChain i ruszam z tym w FrontControllerze razem z wynikiem rutera. Każda z odpalonych akcji umieszcza swój wynik w odpowiednim bloku poprzez
teraz tak zcachowany widok akcji wywalam do szablonu poprzez
Mam nadzieje ze sprostowałem nazwe "bloki" w moim FW .. Ps. rzeczywiście delikatnie odskoczyłem od wątku ... jednak jedną akcja z url'a np. index.php/news/show/2 jestem w stanie jednocześnie odpalić akcje komentarzy do tej akcji i bez problemowo połączyć je w jednym szablonie .. jak za bardzo namieszałem w wątku z góry przepraszam Pozdrawiam widmogrod -------------------- http://blog.widmogrod.info
KontorX – rozszeżenie bibliotek Zend Framework - http://code.google.com/p/kontorx/ KontorX – przykłady - http://kontorx.widmogrod.info Cappuccino Framework - http://wiki.widmogrod.info/cappuccino |
|
|
15.01.2007, 20:58:03
Post
#24
|
|
Grupa: Zarejestrowani Postów: 493 Pomógł: 0 Dołączył: 14.06.2003 Skąd: Tomaszów Lubelski/Rzeszów Ostrzeżenie: (0%) |
Smieszne masz nazewnictwo wszystkiego. U mnie sa tylko dwa kontrolery: Controller oraz AppController. Ten pierwszy znany jest jako FrontController. Dalej jest moduł i akcja z widokiem. U ciebie kazdy moj moduł to jest nowy kontroler :roll2: Ale wracajac do tematu...
Ja nie musze nic edytować, dopisywac do szablonu. Nic z tych rzeczy. Kazdy kazda akcja modułu ma swoj tpl które są ładowane do głownego tpl Kazdy wynik akcji bedzie w loadModuleView(). Natomiast w samej akcji moge zrobić nawet cos takiego: Natomiast jesli forward() damy na koncu to zostaną wykonane wczesniejsze załadowane akcje, ale bez ładowania widoków Tak wiec mozliwosci kombinowania jest dużo I jak zechce to moge odpalic nawet kilka razy ta samą akcje (tylko nie wiem po ) Ten post edytował menic 15.01.2007, 20:58:51 -------------------- |
|
|
15.01.2007, 23:22:03
Post
#25
|
|
Grupa: Zarejestrowani Postów: 52 Pomógł: 0 Dołączył: 28.10.2005 Skąd: kraków Ostrzeżenie: (0%) |
Cytat Smieszne masz nazewnictwo wszystkiego. U mnie sa tylko dwa kontrolery: Controller oraz AppController. Zwał jak zwał .. funkcje są podobne AForntController - jest to "rozrusznik" zaczyna wszystko i AController - jest to abstrakcja akcji .. u ciebue View, widze ze posiada metode forward() co pasuje mi bardziej do akcji niż do widoku ale to jest kwestia podejścia programisty do projektowania FW i nazewnictwa .. no chyba ze dziedziczony View nie posiada forwarda ... i ma całkiem inne zadanie .. możesz mi powiedzieć jakie cechy ma klasa View? Powiem ze ciekawe rozwiązanie .. jednak zostane przy swoim .. a zawsze mogę wyposażyć FW w metode ( takie rozwiązanie jest chyba w symfony .. nie jestem 100% pewien .. ) która bedzie mi zwracać wynik akcji z innego kontrollera ect. i później
i w szablonie
i podobny efekt, co o tym sądzisz? -------------------- http://blog.widmogrod.info
KontorX – rozszeżenie bibliotek Zend Framework - http://code.google.com/p/kontorx/ KontorX – przykłady - http://kontorx.widmogrod.info Cappuccino Framework - http://wiki.widmogrod.info/cappuccino |
|
|
16.01.2007, 00:20:00
Post
#26
|
|
Grupa: Zarejestrowani Postów: 222 Pomógł: 35 Dołączył: 6.02.2005 Ostrzeżenie: (0%) |
Przyglądam się Waszej i snuje wnioski i pomysły . Wnioski takie mam, że albo lubicie sobie komplikować sprawę albo po prostu 'tak Wam wygodnie'. Oczywiście każdy ma to co lubi i pisze FW dla siebie i pod siebie. Z resztą sam też się w to bawię i więcej mam przyjemności z budowy FW niż z samego korzystania z niego .
Co do wywoływań akcji to akurat ja sobie to zupełnie inaczej obmyśliłem. Wydaje mi się że sporo prościej ale po kolei wytłumaczę. Generalnie jest sobie kontroler. Ma on funkcję statyczną runEvent() z parametrami : jaką klasę i metodę wywołać oraz jakie parametry przesłać do niej. Zwraca to co dana metoda wypluje. Oczywiście sam kontroler ma w sobie mechanizmy sprawdzające czy się wywołania nie zapętlą itp. Ma również obiekty odpowiadające za cache'owanie obiektów akcji (czy jak ja to nazywam 'eventów'), za dane sesji no i za widok. Metodę runEvent można wywołać z każdego miejsca FW tak więc odpada nam konieczność robienia forward() i martwienia się o to czy można i jak. Dodatkowo daje nam możliwość kontrolowania kazdej akcji z poziomu kontrolera (chyba zamieszałem:) ). Każda klasa obsługująca zdarzenia musi dziedziczyć po bazowej klasie do zdarzeń. Dzięki temu każda z akcji ma możliwość dodania zmiennych wyświetlanych w widoku czy modyfikacji zmiennych sesyjnych. Dopiero później kontroler przekazuje do widoku sterowanie z zebranymi danymi. Jedyne co akcja musi zrobić to zdefiniować nazwę szablony do wyświetlenia i tylko ta akcja która została wywołana z router'a. Dodatkowo mam możliwość zdefiniowania czy daną akcję mogę wywołać przez URL'e czy tylko i wyłącznie przez metodę runEvent. Jedyne co mnie natchnęliście to muszę się zastanowić czy chcę aby klasy obsługujące zdarzenia miały możliwość definiowania własnych części widoku a nie tylko danych do wyświetlenia. -------------------- |
|
|
16.01.2007, 07:50:54
Post
#27
|
|
Grupa: Zarejestrowani Postów: 493 Pomógł: 0 Dołączył: 14.06.2003 Skąd: Tomaszów Lubelski/Rzeszów Ostrzeżenie: (0%) |
View dziediczy po AppControlerze, stąd dostepnośc forward. W Klasie View trzymane są metody jak nazwa wskazuje do widoku, takie jak loadModuleView(), loadAppView(), setView() itp. Narazie jeszcze jest nie rozubudowana, gdyz meczyłem sie z kontrolerami
CZy to komplikowanie? W pewnym sensie tak, ale zalezy jak na to pparztec Pisze o głownie dla pożniejszej wygody. Wkurzyło mnie jak pisałem w Symfony, ze w module newsów musze pisac tez moduł komentarzy (wiec po co cała modułowosc?) U mnie Controller odpowiada tylko za załadowanie odpowiednich plikow i tyle. Reszte przejmuje appController z funkcjiami do ładowania akcji itp. Metoda NewModel() to jest tak jak by nakladka na metode executeAction() z appControllera. Musiałem rozdzielic, bo raczej rzadko sie uzywa newModel wiec bez sensu byłoby to pakowanie do głownej metody wywoławczej A działanie forward jest takie, ze wykonuje wszystko w danej akcji, lecz nie wyswietla jej wyniku tylko przenosi do innej akcji i tam juz wyswietla wynik tej przeniesionej -------------------- |
|
|
16.01.2007, 13:42:02
Post
#28
|
|
Grupa: Zarejestrowani Postów: 52 Pomógł: 0 Dołączył: 28.10.2005 Skąd: kraków Ostrzeżenie: (0%) |
@menic - i już wszystko jasne ( ciekawe podejście ) ..
Cytat Z resztą sam też się w to bawię i więcej mam przyjemności z budowy FW niż z samego korzystania z niego hehe .. z tym sie zgodze Każdy ma swoje podejście do projektowania i dla mnie takie rozwiązanie jest bardziej przyjemne .. jednak ciągle się rozwijam i kto wie czy za miesiąc nie będę miał nowej wizji rozwiązania tego problemu .. czy też innych Pozdrawiam Miłego kodowania Ten post edytował widmogrod 16.01.2007, 13:45:59 -------------------- http://blog.widmogrod.info
KontorX – rozszeżenie bibliotek Zend Framework - http://code.google.com/p/kontorx/ KontorX – przykłady - http://kontorx.widmogrod.info Cappuccino Framework - http://wiki.widmogrod.info/cappuccino |
|
|
Wersja Lo-Fi | Aktualny czas: 26.04.2024 - 12:23 |