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.




Każdy obiekt akcji zawiera obiekt typu actionDataObject.
  1. <?php
  2. $this->data->tekst='Hello World!'; // tak dodajesz dane
  3.  
  4. //W innej akcji...
  5. // pomocnik  akcje konkretna akcja obiekt danych
  6. $dane=$this->AHelper->getActions()->getAction('name', 'module')->getDataObject(); //pobierasz ten obiekt
  7. $this->data->dane=$dane->tekst;
  8. ?>


Przekazane do widoku, to przekazanie obiektu actionDataObject do obiektu odpowiedzialnego za warstwę prezentacji

W praktyce:
  1. <?php
  2.  
  3. /**
  4.  * Pobiera wskazany parametrem ID rekord i przechowuje obiekt News
  5.  */
  6. class news_get extends Action
  7. {
  8.  
  9. public function Perform()
  10. {
  11. $req=$this->AHelper->getReqRegistry();
  12. $id=(integer)$req->get('id');
  13. $db=DB::getInstance();
  14. $db->setQuery("SELECT * FROM news WHERE id='$id'");
  15. $result=$db->fetchAll();
  16. if(!count($result)>0)
  17. {
  18. $this->setStatus('ERROR');
  19. return;
  20. }
  21. $this->data->news=new News($result[0]);
  22.  
  23. }
  24. }
  25. ?>


  1. <?php
  2.  
  3. /**
  4.  * Operuje na pojedyńczym newsie - przekazuje go jako tablicę do widoku
  5.  * W razie niepowodzenia ustawia widok błędu
  6.  *
  7.  */
  8. class news_show extends Action
  9. {
  10.  
  11. public function Perform()
  12. {
  13. $get=$this->AHelper->getActions()->getAction('get', 'news')->getDataObject();
  14. if($get->has('news'))
  15. {
  16. $this->data->news=$get->news->getAsArray();
  17. return;
  18. }
  19. $this->setStatus('ERROR');
  20. }
  21. }
  22. ?>


Templatka
  1. <?php
  2. print $news['title'].'<br />';
  3. print $news['body'].'<br />';
  4. ?>


Pozdrawiam.


--edit
Wywołanie:
http://host.pl/news/show/id_32

Co do parsowania; łańcuszek akcji jest znany przed uruchominiem pierwszej akcji. Jedynie w trakcie żądania może się odrobinę zmienić - jedne akcje mogą wypaść, inne zostać dodane. Jest to więc proces dynamiczny.

--eidt kolejny : P
  1. <show>
  2. <slot>show</slot>
  3. <subactions>
  4.   <get module="news" />
  5. </subactions>
  6. </show>


akcja show musi dostarczyc widok główny (show.slot.tpl), który jest stroną www.

Ten post edytował Cysiaczek 3.07.2007, 13:30:55
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: 17.10.2025 - 06:36