Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [ZF] Budowa akcji dla ajax`a, Konstrukcja akcji w kontrolerze odpowiedzialenj za ajax`a
Fluke
post 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.
Go to the top of the page
+Quote Post
basso
post 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
Go to the top of the page
+Quote Post
Fluke
post 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ć.
Go to the top of the page
+Quote Post
basso
post 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 smile.gif
a w drugim ładujesz widok.

Ten post edytował basso 19.06.2013, 19:17:41
Go to the top of the page
+Quote Post
ShadowD
post 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
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: 26.04.2024 - 03:36