Koledzy muszę osadzić na stronie formę która składa się z wielu subform, wygląda to tak że mam takie formy:

userForm
userAddresForm

Muszę z tego stworzyć formę która bedzie zawierała userForm oraz dwie userAddressForm

normalnie wyglądało by to tak:

  1. <!-- userForm -->
  2. <input name="userLogin" />
  3. <input name="userPass" />
  4. <!-- //userForm -->
  5. <!-- userAddressForm (adres zamieszkania)-->
  6. <input name="userAddress[0]Street" />
  7. ...
  8. <!-- //userAddressFrom-->
  9. <!-- userAddressForm (adres zamieszkania)-->
  10. <input name="userAddress[1]Street" />
  11. ...
  12. <!-- //userAddressForm-->
  13. </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ć:

  1. ...
  2. public function init()
  3. {
  4. parent::init();
  5.  
  6. ...
  7.  
  8. $userAddressForm = new Application_Form_UserAddress();
  9.  
  10. $addresses = array('domowy', 'kontaktowy');
  11.  
  12. foreach($addresses as $address) {
  13. $form = clone $userAddressForm;
  14. $form->setName($address);
  15. $form->setElementsBelongTo($address);
  16. $this->addSubForm($form, $address);
  17. }
  18. }
  19. ...


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