Мне нужно создать форму, в которую элементы (texbox, select, ..) будут динамически вставляться.Прямо сейчас я создал пустой файл формы с просто скрытым элементом, и они в моем контроллере. Я иду вставлять элементы в соответствии с определенными условиями.
Мой файл формы:
class Form_Questions extends Zend_Form {
public function __construct() {
parent::__construct($options);
$this->setName('Questions');
// Hidden Label for error output
$hiddenlabel = new Zend_Form_Element_Hidden('hiddenlabel');
$hiddenlabel->addDecorator(new Form_Decorator_HiddenLabel());
$this->addElements( array($hiddenlabel) );
}
}
В контроллереУ меня есть что-то вроде:
...
$form = new Form_Questions();
$request = $this->getRequest();
if ($request->isPost())
{
$formData = $request->getPost();
if ($form->isValid($request->getPost()))
{
die(var_dump($form->getValues()));
}
}
else
{
//... add textbox, checkbox, ...
// add final submit button
$btn_submit = new Zend_Form_Element_Submit('submit');
$btn_submit->setAttrib('id', 'submitbutton');
$form->addElement($btn_submit);
$this->view->form = $form;
}
Форма отображается нормально, но проверка доставляет мне большие проблемы.Мой var_dump () показывает только скрытый элемент, который статически определен в файле формы.Он не сохраняет динамические элементы, поэтому, хотя я могу заставить их читать, что происходит через POST, я не могу сделать что-то вроде
$form->getValue('question1');
Это ведет себя так, как если бы Zend использовал файл Form для хранения значений при отправкеслучается, но поскольку элементы создаются динамически, они не сохраняются (ни их значения) после публикации, поэтому я не могу обработать их, используя стандартный метод getValue ().
Буду признателен за любые идеи о том, как сделатьони «живут» до публикации, поэтому я могу читать их как в обычном виде.