![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 657 Pomógł: 2 Dołączył: 15.08.2003 Skąd: Łódź Ostrzeżenie: (0%) ![]() ![]() |
Oto mały przykład "wycięty" z mojego, powstającego jeszcze frameworka (jak widac pisanego mniej wiecej wg zasad MVC).
Przy starcie aplikacji wywołujemy metode Application::run() która wybiera akcje oraz widok. Uruchamia akcje, która z kolei może poprzez 'return' zwrócić: + Obiekt dziedziczący z klasy Action - wtedy kontroler uruchomi tę akcje (w ten sposób obsługiwane są łańcuszki akcji. + Inne, dowolne dane - wtedy kontroler traktuje je jako wynik działania akcji(łańcuszka) i przekazuje go do widoku(poprzez konstruktor). Na końcu kontroler wyświetla widok. Po 1. Powiedzcie co tu może być źle przezemnie zrozumiane itd. Co można poprawić/zmienić. Jestem otwarty na propozycje ;] Po 2. Mam problem z obsłużeniem błędów akcji. Takich jak np. w akcji 'showNews' brak newsa w bazie danych. Na razie obsługuje to jako łańcuszek jednak problem pojawia się, gdy akcja 'showError' korzysta z innego widoku niż akcja 'showNews'. Trzeba by było jakoś sensownie ten widok podmieniać. Jak ? Albo jak rozwiązań to "fajnie". Mam wrażenie (pewnie uzasadnione), że to co istnieje teraz jest dość felernym rozwiązaniem. ps. nie chce wykorzystywać czegoś ala 'fallback-action' gdyz to umożliwia generowanie tylko jednego komunikatu błędu gdy ogólnie akcja się "spsuje". Prosze o pomoc (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) Model:
Akcja:
Widok:
Kontroler:
Ten post edytował Vengeance 1.03.2005, 16:48:44 |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 657 Pomógł: 2 Dołączył: 15.08.2003 Skąd: Łódź Ostrzeżenie: (0%) ![]() ![]() |
@chmolu:
Łańcuszki właśnie przydają się często (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) Przynajmniej ja widze, że będzie mi to przydatne. Cytat W moim frameworku nie ma akcji typu showNews/showArticle/showXX. To jest zadanie widoków. Przez akcję rozumiem coś, co zmienia model (addArticle, addNews, deleteNews). Wiesz, ja wychodze z założenia, że podel sam z siebie nie może być "uruchomiony". Tzn _zawsze_ musi wystąpić akcja, nawet jeśli jest działanie ogranicza się do zrobienia 'return true;'. Wtedy dopiero kontroler inicjuje widok. Pozatym w widoku nie pobieram żadnych danych bezpośrednio z modelu. Tego dokonuje akcja przekazując następnie wynik do modelu. Z tego właśnie wynika, że stosuje akcje typu showNews/showArticle/showXX. Cytat A jeśli błąd wystąpi w akcji typu deleteNews to możesz przerwać akcję i wywołać setView('Error', $dane /* komunikaty o błędach */); Także miałem pomysł, aby wykorzystać "coś" co jest w stanie zmienić widok. Metoda setView czy też jaki dodatkowy parametr zwracany w 'return'. Jednak wydawało mi się to jakieś "dziwne". Po to właśnie storzyłem ten wątek aby uzyskać inne sposoby (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg) |
|
|
![]() ![]() |
![]() |
Aktualny czas: 5.10.2025 - 03:28 |