![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 90 Pomógł: 4 Dołączył: 5.02.2006 Ostrzeżenie: (0%) ![]() ![]() |
Witam,
Spróbowałem napisać aplikację w ZF z wykorzystaniem Zend_Form. W przypadku zwykłych, statycznych formularzy nie mam problemu z obsługą formów od ZF. Potrzebuję jednak wyświetlić podkategorie(selectem) dla wybranej wyżej kategorii(select). Pomyślałem sobie, że jedynym rozsądnym rozwiązaniem będzie ajax, dodałem do selecta z kategoriami zdarzenie onChange, w js ajaxem odebrałem ID kategorii, następnie zastąpiłem pusty select podkategorii (generowany w Zend_Form) elementem o tym samym id i name uzupełnionym o opcje pobrane ajaxem. Problem polega jednak na tym, że Zend_Form nic nie wie o opcjach które zostały dostarczone dzięki Ajax i wyrzuca błąd
W jaki sposób prawidłowo należy rozwiązać problem z dynamicznymi formularzami(selectami) przy użyciu Zend_Form? Chyba znalazłem rozwiązanie problemu, może nie jest za bardzo eleganckie ale działa Pobieram wszystkie podkategorie kategorii przy ładowaniu formularza, a dopiero po wybraniu konkretnej kategorii wyświetlam podkategorie przypisane do niej. Dzięki temu Zend_Form wie z czym ma do czynienia
|
|
|
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 96 Pomógł: 6 Dołączył: 22.08.2007 Skąd: Wrocław Ostrzeżenie: (0%) ![]() ![]() |
A nie możesz dodać pustego elementu select dla podkategorii i dodawać mu elementy w momencie, kiedy znany jest już ID kategorii nadrzędnej (w celu walidacji)?
|
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 90 Pomógł: 4 Dołączył: 5.02.2006 Ostrzeżenie: (0%) ![]() ![]() |
Zend_Form na to nie pozwoli, przy generowaniu selecta musi znać zestaw danych jaki będzie zawierał.
|
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 96 Pomógł: 6 Dołączył: 22.08.2007 Skąd: Wrocław Ostrzeżenie: (0%) ![]() ![]() |
Waliduj select z kateogrią, jeśli ok to wrzucaj do selecta z podkategoriami wpisy i wtedy waliduj całość
|
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 98 Pomógł: 33 Dołączył: 10.05.2011 Skąd: Krak Ostrzeżenie: (0%) ![]() ![]() |
Może lepszym rozwiązaniem będzie wykonanie metody setRegisterInArrayValidator z parametrem false na elemencie formularza.
Potem można dodać jeszcze walidator Zend_Validate_Db_RecordExists, żeby sprawdzić czy podane podkategorie istnieją w bazie.
setRegisterInArrayValidator powinien wyeliminować ten błąd:
Ten post edytował droslaw 6.01.2012, 15:03:29 |
|
|
![]()
Post
#6
|
|
Grupa: Zarejestrowani Postów: 90 Pomógł: 4 Dołączył: 5.02.2006 Ostrzeżenie: (0%) ![]() ![]() |
@droslaw: dziękuję, naprawdę bardzo ciekawe i użyteczne rozwiązanie problemu (IMG:style_emoticons/default/smile.gif)
|
|
|
![]() ![]() |
![]() |
Aktualny czas: 20.09.2025 - 04:51 |