![]() |
![]() |
![]()
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. |
|
|
![]() |
![]()
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 |
|
|
![]()
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ć. |
|
|
![]()
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 |
|
|
![]()
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. |
|
|
![]() ![]() |
![]() |
Aktualny czas: 3.10.2025 - 19:51 |