[ZF] Budowa akcji dla ajax`a, Konstrukcja akcji w kontrolerze odpowiedzialenj za ajax`a |
[ZF] Budowa akcji dla ajax`a, Konstrukcja akcji w kontrolerze odpowiedzialenj za ajax`a |
19.06.2013, 07:25:30
Post
#1
|
|
Grupa: Zarejestrowani Postów: 247 Pomógł: 9 Dołączył: 20.09.2010 Skąd: Kraków Ostrzeżenie: (0%) |
Witam,
Zastanawiam się jak najlepiej jest skonstruować akcje w kontrolerze, żeby móc odbierać żądania i wysyłać odpowiednie dane z powrotem. Wiem że w metodzie init trzeba zainicjować helpera "AjaxContext", chodzi mi głównie o samą akcję. Czy robicie na zasadzie takiej jak zwykła akcja, która pobiera dane z modelu, coś jeszcze przetwarza, ładuje widok i wysyła z powrotem. Czy może wszystko tak jak wcześniej ale wysyłacie to w postaci JSON(nie może renderować widoku ale może być przypisany do zmiennej np: $this->view->xhtml = $view->render('index.phtml')). W 2 przypadku można dodatkowo przekazać pewne zmienne. W pierwszym, jak rzucę wyjątkiem to za pomocą jQuery nie mam jak sobie z tym poradzić i pięknie mi się wyświetla stack. Dziękuję i pozdrawiam. |
|
|
19.06.2013, 09:14:36
Post
#2
|
|
Grupa: Zarejestrowani Postów: 155 Pomógł: 1 Dołączył: 12.12.2010 Ostrzeżenie: (0%) |
Ja robię tak jeśli interesuje mnie zwrotka akcji:
Wyłączam layout w akcji: $this -> _helper->layout()->disableLayout(); Wtedy mam czyściusieńki wynik samej akcji. Zazwyczaj mi to wystarcza. Jeśli mam przekazać zmienne zwracam je przez tablice JSON. Dane z żądania są odbierane identycznie jak ze zwykłego wywołania. Ja nie inicjuje żadnego AjaxContext. Ten post edytował basso 19.06.2013, 09:15:17 |
|
|
19.06.2013, 11:31:16
Post
#3
|
|
Grupa: Zarejestrowani Postów: 247 Pomógł: 9 Dołączył: 20.09.2010 Skąd: Kraków Ostrzeżenie: (0%) |
No a ja właśnie inicjuje "AjaxContext" z tego względu, że chciałbym mieć wybór do html, czy JSON.
Nie chcę powielać 2x tej samej akcji tylko z tą różnicą, że jedna ma zwracać JSON a druga widok. Nie mam pomysłu jak ten problem rozwiązać. |
|
|
19.06.2013, 19:17:02
Post
#4
|
|
Grupa: Zarejestrowani Postów: 155 Pomógł: 1 Dołączył: 12.12.2010 Ostrzeżenie: (0%) |
No to sprawdzasz czy jest xmlhttprequest (if( $_SERVER ['HTTP_X_REQUESTED_WITH'] != 'XMLHttpRequest')) czy nie i po problemie.
Przecież tak czy siak musisz to sprawdzić aby ktoś sobie przez url nie wszedł z okna przeglądarki. I w jednym przypadku dajesz $this -> _helper->layout()->disableLayout(); i jedziesz z JSON a w drugim ładujesz widok. Ten post edytował basso 19.06.2013, 19:17:41 |
|
|
19.06.2013, 21:01:11
Post
#5
|
|
Grupa: Zarejestrowani Postów: 1 333 Pomógł: 137 Dołączył: 25.03.2008 Skąd: jesteś?? Ostrzeżenie: (0%) |
Normalna akcja i w niej: $request->isXmlHttpRequest()
Jeśli true to jest ajax i dajesz noRender dla layoutu, następnie robisz co chcesz albo json albo html zwracasz, jeśli false piszesz wszystko tak jak by ajaxa wogóle nie było. -------------------- Mój blog - o wszystkim i niczym ale zazwyczaj związane z informatyką! ;-)
Githube Usługi spawalnicze i monterskie | Park linowy Lublin i Okunince |
|
|
Wersja Lo-Fi | Aktualny czas: 26.04.2024 - 03:36 |