Как объединить два Zend_Forms в один Zend_Form? - PullRequest
1 голос
/ 03 февраля 2010

У меня есть две Zend_Forms (form1 и form2). Я хотел бы объединить их, чтобы у меня была третья форма (form3), состоящая из всех элементов обеих форм.

Как правильно сделать это с Zend Framework?

Ответы [ 2 ]

3 голосов
/ 03 февраля 2010

Вот как я это сделал ... Я не хотел, чтобы пространство имен каждой формы, я просто хотел, чтобы все элементы в форме, поэтому я решил просто добавить все элементы по отдельности вместо использования подформ.

<?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());
    }
}
1 голос
/ 03 февраля 2010

Вы можете использовать подчиненные формы.Единственная разница между Zend_Form и Zend_Form_SubForm заключается в декораторах:

$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);

Затем в контроллере вы назначаете форму для вида:

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

И вы можете получить доступ кдве подчиненные формы в представлении по имени:

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