![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 222 Pomógł: 34 Dołączył: 3.11.2010 Ostrzeżenie: (0%) ![]() ![]() |
Witam szanowne grono Kolegów.
Od jakiegoś czasu zabawiam się z Zendem i przyszedł czas na wplecienie AJAXa w funkcjonalność aplikacji. Moje pytanie jest następujące. W jaki sposób obsługujecie zapytania po stronie Zenda? Chodzi mi tutaj o następującą rzecz: załóżmy, że chcę dynamicznie podstawić do jakiegoś DIV'a inputa, selecta czy cokolwiek. Po stronie przeglądarki nie jest istotne jak to załatwimy (JS czy jQuery). Ważne jest jak to obsłużyć po stronie Zenda. Czytałem, czytałem i w większości sytuacji wyglądało to tak, że dowołanie szło na konkretny kontroler i akcje, które zwracały np kod html. Problem w tym, jak zarządzać strukturą katalogów, kontrolerów, akcji dla Ajaxa? Czy macie np jeden kontroller i do tego odpowiednie akcje ? np /ajax/categoryselect ? Czy może wplatacie wyniki dla ajaxa w kontrolery, które są przeznaczone także do normalnego funkcjonowania strony. A może jeszcze inaczej ? Bardzo jestem ciekaw Waszych opinii. P.S. Jeżeli za bardzo zamieszałem to przepraszam (IMG:style_emoticons/default/wink.gif) Ten post edytował Ghost_78 6.07.2011, 07:22:47 |
|
|
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 1 366 Pomógł: 261 Dołączył: 23.09.2008 Skąd: Bydgoszcz Ostrzeżenie: (0%) ![]() ![]() |
Używając helpera contextSwitcher i ajaxContext można łatwo zrobić akcję które mogą działać po ajaxsie i normalnie (IMG:style_emoticons/default/wink.gif) Bo praktycznie jeżeli używasz helpera to one się nie różnią (IMG:style_emoticons/default/wink.gif)
przykład: Akcja zwraca formularz:
Jeżeli użyjesz ajaxContext i zwracany format masz html to zwróci Tobie po prostu samą wyrenderowaną akcję bez layout'u (oczywiście sam sprawdzi czy request jest ajax'owy itp), problem robi się gdy zwracasz JSON'a wtedy już musisz zwrócić więcej danych czyli czy waldiacja przeszła poprawnie i jeżeli nie to wyrenderowany formularz, albo po prostu jeżeli ok to ok a jeżeli rpzyszedł form wyrenderowany to zakładamy że nie przeszedł walidacji, sposobów jest mnóstwo (IMG:style_emoticons/default/wink.gif) Ten post edytował melkorm 6.07.2011, 09:17:27 |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 222 Pomógł: 34 Dołączył: 3.11.2010 Ostrzeżenie: (0%) ![]() ![]() |
To co piszesz to święta prawda (IMG:style_emoticons/default/smile.gif) .
Doskonale to opisał Batman na blogu (za co dzięki śliczne). W moim poście i pytaniu chodziło mi bardziej o samą strukturę. Postaram się jaśniej naświetlić mój problem: Wiadomym jest, że jeżeli chcemy coś pobrać AJAXem to musimy się odwołać do jakiegoś skryptu PHP. Zazwyczaj bez ZENDa robiłem sobie to tak: za pomocą AJAXa wywoływałem sobie np: jakisPlik.php?szukam=czegos
Nie jest to jakoś specjalnie za eleganckie - ale działało (IMG:style_emoticons/default/wink.gif) Chodzi mi tutaj teraz o to, żeby w Zendzie nauczyć się to pisać w "ładny" sposób. Można np zrobić małą fabryczkę, która będzie nam w ten sam sposób zwracała takie selekciki:
wtedy możemy AJAXem sobie pobrać to przez /selecty/kategorie Tylko moje pytanie - czy taki sposób jest prawidłowy ? Czy Wasze doświadczenie także doprowadziło Was do takich rozwiązań? |
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 1 366 Pomógł: 261 Dołączył: 23.09.2008 Skąd: Bydgoszcz Ostrzeżenie: (0%) ![]() ![]() |
to gdzie umieścisz funkcję od ajax'a to już Twoja sprawa, ja pakuję je tam gdzie powinny być czyli w zasięgu danego kontrola który odpowiada za wyświetlanie tego gdzie ajax się odbywa.
Co do przykładu to się przyczepie do tego że wszystko związane z pobieraniem danych powinno się odbywać w modelu więc by to wyglądało tak:
Ten post edytował melkorm 6.07.2011, 11:25:35 |
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 222 Pomógł: 34 Dołączył: 3.11.2010 Ostrzeżenie: (0%) ![]() ![]() |
yyy. Nie za bardzo wiem do której części nawiązałeś. Chodzi o to ?
Jeżeli tak to to tylko był przykład na podmiankę selekta w formularzu. Czasami tak jest, że chcemy podmienić listę w selekcie (w formularzu) w zależności od tego co jest wybrane w innej części formularza. Co do danych to oczywiście pobieram je w Modelu i ewentualnie przekazuje do formularza lub jego elementu aby wypełnić go danymi. Tutaj przedstawiłem tylko zarys tego co chciałem osiągnąć. Co do umieszczenia kodu, który będzie 'wyświetlany' dla AJAXa to w sumie chodziło mi o to miejsce. Ty umieszczasz to w kontrolerze gdzie jest dana podstrona wyświetlana. I to jest ok. Tylko co jeżeli chcemy tak jak napisałem - pobrać tylko mały element, który może występować w wielu podstronach. Wtedy troszeczkę kłóci się z zasadami dobrego programowania umieszczanie kodu dla AJAXa w każdym miejscu. Np mając 10 podstron na których musimy zaktualizować AJAXem tylko część formularza (uparłem się). Wtedy w każdym kontrolerze musielibyśmy wklejać wyżej przedstawiony kod. Z drugiej strony nie możemy zapisać tylko w jednym z nich bo z czasem nie będziemy pamiętali, w którym on był. Poza tym to takie trochę nie eleganckie by było (IMG:style_emoticons/default/smile.gif) . Dlatego właśnie myślałem o jakimś specjalnym miejscu (IMG:style_emoticons/default/smile.gif) . P.S. Przepraszam za męczenie tematu jakoś zmęczyło mnie pisanie kodu, który będzie działał - bez znaczenia jak został napisany. Czas zabrać się za eleganckie pisanie (IMG:style_emoticons/default/tongue.gif) . Jeszcze kawałek drogi przede mną i dlatego wolę podpytać bardziej doświadczonych ode mnie (IMG:style_emoticons/default/smile.gif) . |
|
|
![]()
Post
#6
|
|
Grupa: Zarejestrowani Postów: 1 366 Pomógł: 261 Dołączył: 23.09.2008 Skąd: Bydgoszcz Ostrzeżenie: (0%) ![]() ![]() |
To już twoja sprawa czy zrobisz jakiś kontroler na ajaxowe funkcje wykorzystywane w wielu miejscach, ale zawsze możesz w kontrolerze A odwołać się do kontrolera B do ajaxowej funkcji
Bo to: Cytat Np mając 10 podstron na których musimy zaktualizować AJAXem tylko część formularza (uparłem się). Wtedy w każdym kontrolerze musielibyśmy wklejać wyżej przedstawiony kod. Jest bezsensu skoro możesz odwołać się do innego kontrolera. Ogólnie to napisz tak i tak, popatrz jak Tobie wygodniej / czytelniej / bezpieczniej - bo niektóre funkcje np będą potrzebowały zalogowanego user'a inne nie, do tego ACL itp (IMG:style_emoticons/default/wink.gif) Ja jestem za moim rozwiązaniem, ale to moje subiektywne spojrzenie (IMG:style_emoticons/default/wink.gif) Ten post edytował melkorm 6.07.2011, 13:51:19 |
|
|
![]() ![]() |
![]() |
Aktualny czas: 23.08.2025 - 22:44 |