2010-02-03 6 views

Répondre

1

Vous pouvez utiliser des sous-formulaires. La seule différence entre Zend_Form et Zend_Form_SubForm sont les décorateurs:

$form1 = new Zend_Form(); 
// ... add elements to $form1 
$form2 = new Zend_Form(); 
// ... add elements to $form2 

/* Tricky part: 
* Have a look at Zend_Form_SubForm and see what decorators it uses. 
*/ 
$form1->setDecorators(array(/* the decorators you've seen */)); 
$form2->setDecorators(array(/* ... */)); 

$combinedForm = new Zend_Form(); 
$combinedForm->addSubForm('form_1', $form1); 
$combinedForm->addSubForm('form_2', $form2); 

Ensuite, dans le contrôleur que vous attribuez la forme à la vue:

$this->view->form = $combinedForm; 

Et vous pouvez accès les deux sous-formulaires dans la vue par son nom:

// In the view 
echo $this->form->form_1; 
echo $this->form->form_2; 
+0

et à mon avis, comment aurais-je accès aux éléments de formulaire? $ this-> form -> ...? – Andrew

+0

getSubForm ('subformName')? – takeshin

3

Voilà comment je fini par le faire ... Je ne voulais pas namespace chaque forme, je voulais juste tous les éléments sous la forme alors j'ai décidé de simplement annonce d tous les éléments individuellement au lieu d'utiliser des sous-formulaires.

<?php 

class Form_DuplicateUser extends Zend_Form 
{ 
    public function init() 
    { 
     $this->setMethod('post'); 

     $form1 = new Form_ContactPrimaryInformationForm(); 
     $this->addElements($form1->getElements()); 

     $form2 = new Form_ContactAdditionalInformationForm(); 
     $this->addElements($form2->getElements()); 
    } 
} 
+0

+1 C'est comme ça que je le fais aussi. –