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
'1' was not found in the haystack
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
//form.. $categoryid = new Zend_Form_Element_Select('categoryid'); $categoryid->setLabel('Kategoria'); $category = new Application_Model_Mapper_SiteCategory; $category = $category->getAll(); foreach($category as $obj) $subcategoryid = new Zend_Form_Element_Select('subcategoryid'); $subcategory = new Application_Model_Mapper_SiteSubCategory; $subcategory = $subcategory->getAll(); foreach($subcategory as $obj) $subcategoryid->setLabel('Podkategoria'); $subcategoryid->setRequired(true);