![]() ![]() |
Post
#1
|
|
|
Grupa: Zarejestrowani Postów: 535 Pomógł: 27 Dołączył: 3.05.2005 Ostrzeżenie: (20%)
|
Posiadam stronę w 40% opartą o ajax. Strona napisana obiektowo według wzorca MCV. Jednak doszedłem do obsługi AJAXu na stronie i mam problem z jego obsługą po stronie php. Jak zrobić to optymalnie?
Mija to się z wzorcem MCV i jest nieporęczne bo mogę wykorzystać to tylko w tym przypadku...
A to tworzy śmietnik w kodzie przy dłuższych komunikatach i treściach przesyłanych AJAXem. webdicepl Poprawiono ;P Ten post edytował wlamywacz 20.04.2008, 20:28:30 |
|
|
|
Post
#2
|
|
|
Developer Grupa: Moderatorzy Postów: 3 045 Pomógł: 290 Dołączył: 20.01.2007 |
Zmień tytuł tematu, forum to nie podwórko.
|
|
|
|
Post
#3
|
|
|
Grupa: Zarejestrowani Postów: 225 Pomógł: 0 Dołączył: 1.11.2005 Ostrzeżenie: (0%)
|
Jeżeli tak wygląda Twój kod, to ja tu nie widzę nigdzie MVC i przez to masz problemy z obsługą ajaxa.
1. echo w klasach? wtf?! 2. kto tu tyle metod statycznych nawalił, a i w niektórych miejscach self użyć by można 3. raz zwracasz raz echo, trochę konsekwencji 4. nazewnictwo - najlepiej po angielsku - całość i wszędzie, a nie raz tak, raz tak Ten post edytował Hacker 20.04.2008, 21:06:49 |
|
|
|
Post
#4
|
|
|
Grupa: Zarejestrowani Postów: 535 Pomógł: 27 Dołączył: 3.05.2005 Ostrzeżenie: (20%)
|
Chłopie to są przykłady w drugim wyraźnie widać że to kombinowanie z MCV. Nie pokazałem kontrolera bo po co ? Model to public function naruszenie a ja mam problem z widokiem...
|
|
|
|
Post
#5
|
|
|
Grupa: Zarejestrowani Postów: 225 Pomógł: 0 Dołączył: 1.11.2005 Ostrzeżenie: (0%)
|
To może daj jakiś lepszy kawałek kodu i powiedz co jest u Ciebie modelem, co kontrolerem, a co widokiem.
|
|
|
|
Post
#6
|
|
|
Grupa: Zarejestrowani Postów: 535 Pomógł: 27 Dołączył: 3.05.2005 Ostrzeżenie: (20%)
|
Przeczytaj całość i nie rób offtopu
Cały mega kontroler (po co mi więcej?) Sprecyzuje: Jak pogodzić model z widokiem aby kod nie był śmietnikiem (obsługa odpowiedzi typu: "ok" itp.) a kod był według wzorca MCV |
|
|
|
Post
#7
|
|
|
Grupa: Zarejestrowani Postów: 697 Pomógł: 47 Dołączył: 19.12.2003 Skąd: Lublin Ostrzeżenie: (0%)
|
Huh nie rozumiem jednego: po co ludzie trzymają sie MVC skoro im jest niewygodnie? To takie wymuszanie chorego wzorca na siłę. Ja np. u siebie nie mam modeli - mam wzorzen VC i jestem bardzo zadowolony =). Niby mam napisaną funkcje do ładowania modeli ale nie korzystam bo jest mi po prostu niewygodnie.
W twoim przypadku mozesz zwracać różne wartości i w zależności od tego jaka wartość zostanie zwrócona generować odpowiedni komunikat. A tak spytam jeszcze z ciekawości (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg) . Z czego pobierasz dane? Tzn czy planujesz coś jeszcze oprócz bazy? (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg) |
|
|
|
Post
#8
|
|
|
Grupa: Zarejestrowani Postów: 535 Pomógł: 27 Dołączył: 3.05.2005 Ostrzeżenie: (20%)
|
Jedynie baza innej możliwości nie przewiduje (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)
|
|
|
|
Post
#9
|
|
|
Grupa: Zarejestrowani Postów: 793 Pomógł: 32 Dołączył: 23.11.2006 Skąd: Warszawa Ostrzeżenie: (0%)
|
@SHiP
Jak nie wiesz po co jest MVC, to Twoja sprawa, bo ja wiem co daje rozdzielenie tych elementów. Jak mam coś zmieniać/poprawiać, nie mam problemu, wystarczy w jednym miejscu coś zmienić i już wszędzie mam uwzględnione, jak nie masz warstwy modelu, to cokolwiek zmienisz w pobieranych danych, czy źródle, od razu musisz przejrzeć gdzie z tego było korzystanie. A to tylko cząstka korzyści. To mi przypomina kolegów, którzy mają SVN, ale czasem przesyłają pliki między sobą, "bo coś nei działa", no a to skutkuje dalszymi kłopotami, jak spytałem dla czego tak robią "bo łatwiej/szybciej" co mija się z prawdą. Co do głównego tematu dyskusji, to właśnie jak koledzy mówią, tu nie ma wydzielonej warstwy widoku.cA w tym przypadku to jest ważne. |
|
|
|
Post
#10
|
|
|
Grupa: Zarejestrowani Postów: 535 Pomógł: 27 Dołączył: 3.05.2005 Ostrzeżenie: (20%)
|
Dlatego pytam jak wy rozwiązalibyście, macie rozwiązane ten problem? Dla mnie tworzenie nowej klasy widoku tylko po to aby obsłużyć te kilka odpowiedzi troszkę mija się z celem ?
|
|
|
|
Post
#11
|
|
|
Grupa: Zarejestrowani Postów: 1 873 Pomógł: 152 Dołączył: 9.04.2006 Skąd: Berlin Ostrzeżenie: (0%)
|
Zależy jak masz napisany widok. Ja przy wysyłaniu zapytania AJAXEM wysyłam dodatkową zmienna np &ajax=1 Później w Pluginie View mam if($this->getInt()>0) { nie wyswietlaj topa i stopki }. A komunikat robie jak każdy inny, do templatki go wrzucam, bo od tego są.
I wychodzi, że jak dam &ajax=ok to zmienia się tylko to, że nie pokaże mi topa (logo itd.) oraz stopki. Ajaxa obsługuje jak normalne zapytanie i moim zdaniem tak powinno być! |
|
|
|
Post
#12
|
|
|
Grupa: Zarejestrowani Postów: 535 Pomógł: 27 Dołączył: 3.05.2005 Ostrzeżenie: (20%)
|
Niezbyt Cię rozumiem jak chciałeś mi pomóc... Po co mam odpalać template do wysłania komunikatu "ok" skoro to musi być bardzo wydajne ? Lepiej zrobię sobie do każdej akcji AJAX osobna funkcję w widoku i tyle
|
|
|
|
Post
#13
|
|
|
Grupa: Zarejestrowani Postów: 793 Pomógł: 32 Dołączył: 23.11.2006 Skąd: Warszawa Ostrzeżenie: (0%)
|
Ogólnie powinieneś mieć tak, że przekazujesz dane do warstwy widoku i tyle, czy będą przekazane do systemu szablonu, zapisane do pliku, czy wysłane "w świat" już akcji nie powinno obchodzić.
Czyli zamiast jak normalnie przekazywać do systemu szablonów, to tworzysz lekką warstwę widoku która nic nie prasuje tylko wyrzuca dane bez formatowania. Oczywiście to jest to co chcesz robić, bo moim zdaniem jednak powinny być szablony, aby to PHP tworzył to co ma być wstawione na stronie, pomijam przypadki, kiedy się zmieniają tylko dane, a widok jest ten sam, bo wtedy to wystarczy pobrać dane. Sam nie używałem AJAX, bo nie musiałem, a inne rzeczy bardziej mnie interesują, ale z tego co pamiętam do niego można przekazywać dane ubrane w pewne formaty, jeden to XML drugi jakiś, który jest od razu, bez przetwarzania dostępny w JS. Ale to jak pisałem, wystarczy zmienić widok i zmieni się sposób prezentacji danych. |
|
|
|
Post
#14
|
|
|
Grupa: Zarejestrowani Postów: 1 873 Pomógł: 152 Dołączył: 9.04.2006 Skąd: Berlin Ostrzeżenie: (0%)
|
Chodziło mi o to, że przekazujesz to do warstwy widoku i (u mnie) ja w Plugin_Template dziedzicze po OPT. nadpisuję funkcję np. display();
Chodzi, żeby zachować jednolitość. W przyszłości jednak będziesz chciał obsłuzyć to w tmeplatcę, to zmienisz tylko w pluginie template, zamiast babrać wszędzie. Ten post edytował bim2 22.04.2008, 20:31:56 |
|
|
|
Post
#15
|
|
|
Grupa: Zarejestrowani Postów: 793 Pomógł: 32 Dołączył: 23.11.2006 Skąd: Warszawa Ostrzeżenie: (0%)
|
@bim2
A nie powinieneś użyć strategi? Bo takie ify... |
|
|
|
Post
#16
|
|
|
Grupa: Zarejestrowani Postów: 79 Pomógł: 12 Dołączył: 23.04.2008 Ostrzeżenie: (0%)
|
W wypadku ajaksu tworze dodatkowe kontrolery/metody które zwracają dane w formacie JSON.
W kontrolerze/metodzie wystarczy wtedy echo json_encode( $data ); Co jest bardzo wygodne i chyba najszybszą metodą zwracania danych do przeglądarki w trybie XMLHttpResponse |
|
|
|
Post
#17
|
|
|
Grupa: Zarejestrowani Postów: 793 Pomógł: 32 Dołączył: 23.11.2006 Skąd: Warszawa Ostrzeżenie: (0%)
|
@MMPrime
A wiesz co się dzieje potem z szybkim i wygodnym kodem, zawsze się coś pier*. Najlepiej wrócić do proceduralnego kodu, tam przecież wszystko było szybkie i wygodne (IMG:http://forum.php.pl/style_emoticons/default/dry.gif) JSON, no właśnie o tym sposobie wracania mówiłem, ale nie pamiętałem nazwy. Do tego jeśli chcecie pisać proceduralnie, to przenieście temat. |
|
|
|
Post
#18
|
|
|
Grupa: Zarejestrowani Postów: 1 873 Pomógł: 152 Dołączył: 9.04.2006 Skąd: Berlin Ostrzeżenie: (0%)
|
@Sedziwoj
Strategi? (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) Człowiek się ciągle uczy i okazuje się, że coraz mniej umie. :] Dobra teraz podsumuje troszkę. Mamy akcję
oraz View:
no i parse ajax:
Ten post edytował bim2 23.04.2008, 09:52:44 |
|
|
|
Post
#19
|
|
|
Grupa: Zarejestrowani Postów: 79 Pomógł: 12 Dołączył: 23.04.2008 Ostrzeżenie: (0%)
|
Cytat A wiesz co się dzieje potem z szybkim i wygodnym kodem, zawsze się coś pier*. Programowanie Web jest kompromisem pomiędzy szybkością działania a programowaniem idealnym(OOP). W tym wypadku nowe metody + JSON sprawdzają się doskonale gdyż funkcjonalność metod ajaksu w 99% jest inna niż jawnego wywołania adresu url w aplikacji. Nie ma też sensu tworzyć szablonów dla funkcji JSON, więc formatka echo json_encode($data); w kontrolerze jest jak najbardziej zgodna z zasadami MVC/OOP --- Poza tym do ajaksu nie powinniśmy przesyłać w ogóle kodu html ponieważ to ogranicza możliwości, wysyłamy dane które rzeczywiście będą użyte w JS. Ten post edytował MMPrime 23.04.2008, 10:15:19 |
|
|
|
Post
#20
|
|
|
Grupa: Zarejestrowani Postów: 1 873 Pomógł: 152 Dołączył: 9.04.2006 Skąd: Berlin Ostrzeżenie: (0%)
|
Ale kto chce wysyłać html? Jeśli coś piszemy, bądźmy konsekwentni i nie róbmy raz $this->getView(); a raz echo json();
|
|
|
|
![]() ![]() |
|
Aktualny czas: 22.12.2025 - 12:54 |