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
Cysiaczek
post
Post #2





Grupa: Moderatorzy
Postów: 4 465
Pomógł: 137
Dołączył: 26.03.2004
Skąd: Gorzów Wlkp.




Ten obiekt nie należy do warstwy modelu. To po prostu obiekt kolekcjonujący dane, którymi akcja chce się podzielić z warstwą widoku lub z inną akcją. Predefinowana zmienna actionName służy raczej do oznaczenia przynależności danego obiektu i przydaje się, gdy chę go wyszukać wśród kilku innych. np. kontroler widoków układa referencje do tych obiektów w tablicy asocjacyjnej używając właśnie nazw akcji jako kluczy.
Generalnie możesz też sobie zawsze w templatce wypisać nazwę akcji, co może być przydatne.
  1. <?php
  2. print $actionName;
  3. ?>


Co do modelu. Ciężko jest mówić o modelu w oderwaniu od implementacji. Kilka dni temu wprowdziłem kolejną funkcjonalność i bardziej można ją nazwac modelem, choć ja uważam, że to po prostu kontroler DAO, współpracujący obecnie w Propelem. Tutaj faktycznie każda akcja może mieć 100% pewności, że odwołując się tak:
  1. <?php
  2. $news=$this->dao->News;
  3. $news->setTitle('ble ble');
  4. $news->save();
  5. ?>


Otrzyma obiekt News, który jest klasą Propela i może sobie dowolnie z niego korzystać.
Jeśli zechce, może udostępnić cały ten obiekt, lub tylko jego fragmenty warstwie widoku poprzez:
  1. <?php
  2. //kontynuacja powyższego kodu
  3. $this->data->title=$news->getTitle();
  4. ?>


Nadmienie jeszcze tylko, że kontroler DAO na zasięg modułu - inne moduły i ich akcje nie widzą go, bo mają własne.
Jak widzisz. Tutaj akcja pełni rolę pośrednika pomiędzy warstwą danych, a widokiem. Sama z kolei jest uczestnikiem większej całości - modułu. Moduł z kolei jest częscią aplikacji lub małą aplikacją. Zauważ, że nie ma kodu odpowiedzialnego za prezentację, co oznacza, że moge sobie wyprodukować dowolne wyjście w postaci html, xml, pdf, pda, plain text, czy_co_tam_chcesz używając jednej i tej samej akcji.

Sorki za lekkie przynudzanie, ale chciałem pokazać, że tradycyjne pojęcie modelu, czy kontrolera
jest zbyt abstrakcyjne - trzeba przyglądać się konkretnym imlementacjom i zorientować się, czy jest sprzeganie, czy go nie ma. Ja w swoim FW chyba nawet przesadziełem z separacją, bo nie ma sensu odpalać go do napisania prostej strony-wizytówki, :|

Pozdrawiam.
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: 14.10.2025 - 04:35