![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 259 Pomógł: 0 Dołączył: 12.07.2009 Ostrzeżenie: (10%) ![]() ![]() |
Chciałam się zapytać czy akcje to są metody kontrolera? Próbuje zrozumieć dogłębnie to MVC i między innymi tego nie wiem
![]() pozdrawiam serdecznie Jola |
|
|
![]()
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/
-------------------- |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 259 Pomógł: 0 Dołączył: 12.07.2009 Ostrzeżenie: (10%) ![]() ![]() |
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 |
|
|
![]()
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.
|
|
|
![]()
Post
#5
|
|
![]() Grupa: Moderatorzy Postów: 2 921 Pomógł: 269 Dołączył: 11.08.2005 Skąd: 127.0.0.1 ![]() |
Tak. Nie! Ponieważ: 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. |
|
|
![]()
Post
#6
|
|
Grupa: Zarejestrowani Postów: 259 Pomógł: 0 Dołączył: 12.07.2009 Ostrzeżenie: (10%) ![]() ![]() |
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 |
|
|
![]()
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 |
|
|
![]()
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. |
|
|
![]()
Post
#9
|
|
Grupa: Zarejestrowani Postów: 259 Pomógł: 0 Dołączył: 12.07.2009 Ostrzeżenie: (10%) ![]() ![]() |
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ć
![]() 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ą ![]() bardzo ale to bardzo proszę o pomoc Jola |
|
|
![]()
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...
|
|
|
![]()
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. ![]() 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:
Ten post edytował Crozin 7.05.2010, 13:08:30 |
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 14.08.2025 - 12:35 |