Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> czy akcje to jest to samo co metody w kontrolerze?
jolam
post 6.05.2010, 19:00:15
Post #1





Grupa: Zarejestrowani
Postów: 259
Pomógł: 0
Dołączył: 12.07.2009

Ostrzeżenie: (10%)
X----


Chciałam się zapytać czy akcje to są metody kontrolera? Próbuje zrozumieć dogłębnie to MVC i między innymi tego nie wiem sad.gif

pozdrawiam serdecznie Jola
Go to the top of the page
+Quote Post
woj_tas
post 6.05.2010, 19:04:40
Post #2





Grupa: Zarejestrowani
Postów: 230
Pomógł: 36
Dołączył: 31.03.2006
Skąd: Zielona Góra

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


Tak.

Przykład: /category/index/

  1. class categoryActions extends autoCategoryActions
  2. {
  3. public function executeIndex(sfWebRequest $request)
  4. {
  5. //
  6. }
  7. }


--------------------
Go to the top of the page
+Quote Post
jolam
post 6.05.2010, 21:15:14
Post #3





Grupa: Zarejestrowani
Postów: 259
Pomógł: 0
Dołączył: 12.07.2009

Ostrzeżenie: (10%)
X----


A mógłbyś wyjaśnić jak to dokładnie ma działać? Np jest strona sklepu internetowego

strona.pl/akcesoria/pompka145
strona.pl/rowery/gorskie/rower123
stona.pl/historia_firmy
strona.pl/kontak

no to jak do tego dorobione są te kontrolery i akcje? Co się dzieje po wpisaniu takiego adresu w przeglądarce, tak krok po kroku, do momentu wyświetlenia zawartości strony?

pozdrawiam Jola
Go to the top of the page
+Quote Post
Crozin
post 6.05.2010, 22:25:31
Post #4





Grupa: Zarejestrowani
Postów: 6 476
Pomógł: 1306
Dołączył: 6.08.2006
Skąd: Kraków

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


W definicji wzorca MVC, nie ma takiego pojęcia jak "Akcja". W kodzie załączonym przez @woj_tas to metoda executeIndex jest kontrolerem, nie cała klasa.
Go to the top of the page
+Quote Post
batman
post 7.05.2010, 08:04:46
Post #5





Grupa: Moderatorzy
Postów: 2 921
Pomógł: 269
Dołączył: 11.08.2005
Skąd: 127.0.0.1




Cytat(woj_tas @ 6.05.2010, 20:04:40 ) *
Tak.

Nie! Ponieważ:
Cytat(Crozin @ 6.05.2010, 23:25:31 ) *
W definicji wzorca MVC, nie ma takiego pojęcia jak "Akcja".


Musiałabyś sprecyzować o jaki framework chodzi. W przypadku ZF nie ma relacji 1 do 1 między akcjami i metodami kontrolera z dwóch powodów:
1. Metody pomocnicze (np init, preDispatch, czy postDispatch).
2. Routing, czyli kilka adresów (akcji) wskazujących na jedną metodę lub na kilka metod nie odpowiadających nazwom akcji.


--------------------
I would love to change the world, but they won't give me the source code.
My software never has bugs. It just develops random features.
Go to the top of the page
+Quote Post
jolam
post 7.05.2010, 08:36:39
Post #6





Grupa: Zarejestrowani
Postów: 259
Pomógł: 0
Dołączył: 12.07.2009

Ostrzeżenie: (10%)
X----


Ja sobie taki mój własny frameworczek pisze:) Tak żeby lepiej to zrozumieć a potem dopiero przesiądę się na jakiś gotowy.

Jak już zostanie wybrany odpowiedni kontroler albo akcja która pobierze dane z modelu, doda je do widoku i wyświetli widok. I to mi się udało zrobić. Ale mam problem z przetworzeniem adresu. Wiem, że to ma wykonywać się w pliku index.php ale nie wiem w jaki sposób zamieniać te adresy na żądania konkretnych kontrolerów? Czy w adresie muszę koniecznie używać takich nazw zmiennych jak kontroler i akcja? Bo teraz to mam np zmienną url w której trzymam adres strony i właśnie na podstawie tego adresu mogę pobierać z bazy dane konkretnej strony (meta, tytuł i zawartość). Bylibyście tak mili i wytłumaczyli mi jak mam zamieniać adresy na kontrolery?

pozdrawiam Jola
Go to the top of the page
+Quote Post
zend
post 7.05.2010, 08:46:15
Post #7





Grupa: Zarejestrowani
Postów: 580
Pomógł: 85
Dołączył: 25.03.2010
Skąd: Skrzyszów :)

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


Jeśli masz adres w postaci index.php/firma/kontakt robisz explode wszystkiego po index.php, w tablicy z indeksem 0 masz nazwe kontrolera, a z indexem 1 masz nazwe akcji do wykonania, a reszta to już parametry które przekazujesz do akcji
Nie musisz używać takich samych nazw kontrolerów i akcji, ale to wymaga zaimplementowania routingu ktory zamieni to co wpisał user na fizyczny kontroler i akcji
np firma/kontakt => controller - company , action - contact

Ten post edytował zend 7.05.2010, 08:49:06
Go to the top of the page
+Quote Post
Cysiaczek
post 7.05.2010, 08:48:53
Post #8





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




Zainteresuj się pojęciem Routingu, bo to o to Tobie chodzi - o zmapowanie adresu url do postaci konkretnego, sparametryzowanego żądania.


--------------------
To think for yourself you must question authority and
learn how to put yourself in a state of vulnerable, open-mindedness;
chaotic, confused, vulnerability, to inform yourself.
Think for yourself. Question authority.
Go to the top of the page
+Quote Post
jolam
post 7.05.2010, 10:25:07
Post #9





Grupa: Zarejestrowani
Postów: 259
Pomógł: 0
Dołączył: 12.07.2009

Ostrzeżenie: (10%)
X----


Cysiaczku masz oczywiście racje. Moim problem jest Router zwany też Front Controlerem. Czytałam trochę na stronie Wikipedii ale nie umiem sobie tego na praktykę przetłumaczyć sad.gif

Czy zmienne w adresie mają mieć z góry zaplanowane nazwy jako kontroler i akcja czy nie koniecznie? Bo z jednej strony łatwiej odczytywać wartości tych zmiennych poprzez tablicę GET a z drugiej dobrze byłoby używać różnych zmiennych w zależności od części wityryny a zachowując wszędzie ładne adresy.

Jeszcze raz bardzo bym prosiła o jakieś większe wytłumaczenie jak zarządzać żądaniami, jak najlepiej skonstruować adresy i jak później w prosty ale i zapewniający pełną kontrole sposób odpowiedzieć na te żądania? W tym wszystkim również ważna dla mnie jest obsługa takich przypadków kiedy adresy są krótkie i mają tylko jedną zmiennąquestionmark.gif

bardzo ale to bardzo proszę o pomoc

Jola
Go to the top of the page
+Quote Post
blooregard
post 7.05.2010, 10:42:56
Post #10


Newsman


Grupa: Moderatorzy
Postów: 2 033
Pomógł: 290
Dołączył: 21.12.2007
Skąd: Łódź




~jolam zajrzyj tu:
http://www.heavymind.net/zend-framework-tutorial/

Na przykładzie Zend Frameworka masz tam ładnie wytłumaczone wszystko. Polecam.


--------------------
Life's simple... You make choices and don't look back...
Go to the top of the page
+Quote Post
Crozin
post 7.05.2010, 13:04:19
Post #11





Grupa: Zarejestrowani
Postów: 6 476
Pomógł: 1306
Dołączył: 6.08.2006
Skąd: Kraków

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


Cytat
Musiałabyś sprecyzować o jaki framework chodzi.
Nie chodziło mi o żaden FW. To czysta teoria była. winksmiley.jpg
Cytat
W przypadku ZF nie ma relacji 1 do 1 między akcjami i metodami kontrolera z dwóch powodów:
Wzorzec MVC oczywiście nie mówi nic o tym jak mają być zaimplementowane konkretne elementy jego struktury. To czy kontrolerem będzie jeden obiekt, kilka obiektów czy jedna metoda obiektu czy może będzie to jakieś rozwiązanie hybrydowe zależy już tylko od osoby implementującej.

Jeszcze takie doprecyzowanie mojej wypowiedzi:
Cytat
W kodzie załączonym przez @woj_tas to metoda executeIndex jest kontrolerem, nie cała klasa.
@woj_tas podał fragment kodu z FW Symfony - tam rolę kontrolera zazwyczaj (nie jest to wymóg) pełni właśnie pojedyncza metoda obiektu. Oczywiście istnieje coś takiego jak pre/postExecute itp. - ale w gruncie rzeczy to właśnie metoda jest "sednem" kontrolera.

@jolam: co do routingu. W duuużym skrócie:
  1. <?php
  2.  
  3. $router = new WebRequestRouter();
  4. $router->setParams($_SERVER['REQUEST_URI'], $_GET); // np.: /thread/123/ala-ma-kota.html, Array ( [p] => 2, [limit] => 12, [highlight] => 'kot' )
  5. $result = $router->route();
  6.  
  7. var_dump($result); // Array ( [module] => board, [controller] => browse )




Ten post edytował Crozin 7.05.2010, 13:08:30
Go to the top of the page
+Quote Post

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

 



RSS Wersja Lo-Fi Aktualny czas: 14.08.2025 - 12:35