Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [ZF] Budowa akcji dla ajax`a, Konstrukcja akcji w kontrolerze odpowiedzialenj za ajax`a
Fluke
post
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
 
Start new topic
Odpowiedzi (1 - 4)
basso
post
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
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
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 (IMG:style_emoticons/default/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
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.
Go to the top of the page
+Quote Post

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

 



RSS Aktualny czas: 3.10.2025 - 19:51