Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [php/MVC] Lancuszek akcji, akcja w akcji.
c3zi
post
Post #1





Grupa: Zarejestrowani
Postów: 266
Pomógł: 20
Dołączył: 15.11.2006
Skąd: Koszalin

Ostrzeżenie: (0%)
-----


Witam,

Jak rozwiazujecie uruchamianie akcji w implementacji innej akcji?

Dodam, iz u mnie kazda akcja posiada swoj widok. Zatem w akcji1, w ktorej musze uruchomic inna akcje2 musialbym jakos przypisac do zmiennej - widok akcji2, a potem przeslac go w zmiennej akcji1 (juz plus akcja2) to widoku akcji1 ? Nie wiem jak do tego podejsc.

Chodzi o to, ze mam dynamicznie tworzona liste danych w akcji2, a akcja1 tez chce z nich korzystac +dodac odp. swoje funkcjonalnosci.

Schemat:
Akcja_showItems->Uruchom akcje main->akcja main wykonuje swoj kod->uruchom szablon akcji_main->przekaz go w zmiennej do akcj showItems->uruchom szablon akcji_showItems przekazuja do niego rowniez dane z akcji main..

Jak do tego podejsc ?
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
Ludvik
post
Post #2





Grupa: Przyjaciele php.pl
Postów: 698
Pomógł: 3
Dołączył: 28.03.2004
Skąd: Wrocław

Ostrzeżenie: (0%)
-----


Klasy HttpRequest i HttpResponse to pseudo-klasy, które zawierają szczegółowe żądanie i odpowiedź związaną z protokołem HTTP. Pierwsza z nich zawiera zmienne GET, POST, ciastka itp. Obiekt odpowiedzi zawiera dane typowe dla odpowiedzi HTTP, czyli nagłówki (w tym ciastka) i treść odpowiedzi. Obiekty kontekstu nie zawierają natomiast danych związanych z protokołem. Obiekty implementujące interfejs request dispatchera mają za zadanie:
  • Wywnioskować na podstawie szczegółowego żądania nazwy akcji i kontrolera aplikacji
  • Przetłumaczyć parametry związane z protokołem (dla HTTP są to GET, POST itp...) na parametry związane z akcją
Na podanych wcześniej przeze mnie stronach drugą z tych ról nazwano fabryką kontekstu. Jak to działa? Powiedzmy, że dostajesz żądanie POST z URL /news/666/comment. W tablicy POST znajdują się dane z formularza komentowania, czyli posiadające klucze autor, mail, strona, tresc. Obiekt HttpRequest będzie posiadał zarówno PATHINFO jak i wszystkie dane przesłane metodą POST. Teraz pałeczkę przejmuje RequestDispatcher dla protokołu Http. Najpierw odczytujemy URL i na podstawie jakiejś mapy/wyrażeń regularnych dopasowujemy go do akcji - w tym przypadku powiedzmy addNewsComment. Z URL możemy też odczytać identyfikator newsa. Zapisujemy go w kontekście żądania z kluczem id. Wybrana przez nas akcja doskonale wie, do czego on się odnosi. Następnie zapisujemy w obiekcie kontekstu dane przesłane POST-em. Klucze będą takie same, bo się nie powtarzają. Teraz w akcji możemy spokojnie odnosić się do obiektu kontekstu, zapominając o implementacji protokołu. Akcji nie obchodzi to, czy żądanie jest wysłane protokołem HTTP, czy jest to żądanie SOAP, AJAX czy inne... Odebraniem komunikatu zajmie się RequestDispatcher, który przetłumaczy go do postaci zrozumiałej dla akcji. Akcje zapiszą rezultaty swojego działania w obiekcie kontekstu odpowiedzi. Uformowaniem odpowiedzi dla konkretnego protokołu zajmie się widok.

Trudno znaleźć przykłady, bo rzadko używa się tego wzorca w PHP. Główną jego zaletą jest zlikwidowanie zależności od protokołu, a programiści PHP rzadko kiedy wykraczają poza HTTP GET i POST... Dla mnie ten wzorzec ma jeszcze jedną zaletę - nieco zwiększa przejrzystość kodu akcji.
Go to the top of the page
+Quote Post

Posty w temacie
- c3zi   [php/MVC] Lancuszek akcji, akcja w akcji.   1.07.2007, 21:35:18
- - Cysiaczek   Powiem Ci coś... To jest bardziej skomplikowane ni...   1.07.2007, 22:36:19
- - c3zi   Witam, Cysiaczek: Niewatpliwie pomogles, aczkol...   3.07.2007, 09:41:42
- - Cysiaczek   Każdy obiekt akcji zawiera obiekt typu actionDataO...   3.07.2007, 13:11:21
- - NoiseMc   Mi sie podoba jak to jest rozwiazane w ZF. W akcji...   3.07.2007, 14:35:01
- - menic   U mnie troche jest to inaczej. Myslalem nad zdefin...   3.07.2007, 14:43:45
- - Cysiaczek   @NoiseMc - Można rzeczywiście w ciele akcji wywoła...   3.07.2007, 14:48:33
- - NoiseMc   Mozna myslec tez w ten sposob, akcje jako komponen...   3.07.2007, 15:05:20
- - c3zi   Cysiaczek: W ktorym momencie definiujesz obiekt A...   3.07.2007, 19:54:07
- - Cysiaczek   Ten obiekt jest tworzony przy tworzenieu egzemplar...   3.07.2007, 20:05:51
- - c3zi   No tak, kazda klasa ma wlasny obiekt z danymi. Jak...   3.07.2007, 22:40:37
- - Cysiaczek   Helper dostarcza mi w tym przypadku interfejs dost...   3.07.2007, 23:46:06
- - NoiseMc   Cytat$this->data->actionName=$this...   13.07.2007, 02:28:15
- - Cysiaczek   Ten obiekt nie należy do warstwy modelu. To po pro...   13.07.2007, 12:31:57
- - menic   Z wszystkich mozliwosci zaprojektowania z jakimi s...   15.07.2007, 16:45:20
- - kaniagandzowski   Cysiaczek: Bardzo mi się spodobał twój pomysł i c...   29.08.2007, 20:45:56
- - menic   Ja u siebie postawiłem na elastycznośc. Może i ten...   29.08.2007, 20:55:59
- - kaniagandzowski   Na pewno będę stosować GET np. do wywołania wybran...   29.08.2007, 21:54:21
- - Ludvik   Ja skłaniam się do wzorca obiektu kontekstu. Wszys...   29.08.2007, 22:34:40
- - kaniagandzowski   Nie znam tego wzorca Context Object (wzorca obiekt...   30.08.2007, 09:06:53
- - Ludvik   Google wyrzuca pierwszy wynik - Core J2EE Patterns...   30.08.2007, 10:15:27
- - kaniagandzowski   Dzięki za szybką odpowiedz. Przeczytałem klika kr...   30.08.2007, 13:47:06
- - Ludvik   Klasy HttpRequest i HttpResponse to pseudo-klasy, ...   30.08.2007, 15:40:53


Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 15.10.2025 - 23:40