userForm
userAddresForm
Muszę z tego stworzyć formę która bedzie zawierała userForm oraz dwie userAddressForm
normalnie wyglądało by to tak:
<form> <!-- userForm --> <input name="userLogin" /> <input name="userPass" /> <!-- //userForm --> <!-- userAddressForm (adres zamieszkania)--> <input name="userAddress[0]Street" /> ... <!-- //userAddressFrom--> <!-- userAddressForm (adres zamieszkania)--> <input name="userAddress[1]Street" /> ... <!-- //userAddressForm--> </form>
Tak więc tworzę formę zbiorczą i dodaje w niej sub formy przez addSubform($userForm, 'userForm') oraz addSubform($userAddress1Form, userAddress1Form) i addSubform($userAddress2Form, userAddress2Form).
Niestety zend nie rozpoznaje że ma 2 takie same formy i w name nie ododaje prefixu [0] i [1].
Mama nadzieje, że rozumiecie o co mi chodzi, jeżeli ktoś ma rozwiązanie na to bardzo proszę aby się podzielił.
Dobra koledzy, wyczaiłem. Zamieszczam soluszyn jakby komuś mogło się przydać:
... public function init() { parent::init(); ... $userAddressForm = new Application_Form_UserAddress(); foreach($addresses as $address) { $form = clone $userAddressForm; $form->setName($address); $form->setElementsBelongTo($address); $this->addSubForm($form, $address); } } ...
Application_Form_UserAddress musi dziedziczyć po Zend_Form_SubForm inaczej będzie kupa, bo pierwsza forma narysuje się prawidłowo a druga narysuje się razem z <form>, pewnie można to rozwiązać przez zdefiniowanie dekoratorów.
Oryginał solucji: http://stackoverflow.com/questions/2567609...set-custom-name