Мне нужна помощь с моей динамически расширяемой формой Zend.
У меня есть форма с подчиненной формой, которая содержит два элемента:
<form>
<fieldset class="itemGroup">
<label>
Question
<input type="text" name="items[questions][]" value="">
</label>
<label>
Answer
<input type="text" name="items[answers][]" value="">
</label>
</fieldset>
</form>
Я получил ее с помощью следующей процедуры:
$itemsSubform = new Zend_Form_SubForm();
$form->addSubForm($itemsSubform, 'items');
$itemsSubform->setElementsBelongTo('items');
$itemQuestion = new Zend_Form_Element_Text('questions', array(
'label' => 'Question',
'isArray' => true,
'filters' => array(
'stringTrim',
),
'validators' => array(
array('stringLength', array('max' => 255)),
),
));
$itemAnswer = new Zend_Form_Element_Text('answers', array(
'label' => 'Answer',
'isArray' => true,
'filters' => array(
'stringTrim',
),
'validators' => array(
array('stringLength', array('max' => 255)),
),
));
$itemsSubform->addDisplayGroup(array($itemQuestion, $itemAnswer), 'itemGroup');
Если необходимо, я просто копирую весь набор полей для расширенной формы с помощью javascript.
Все работает правильно, пока я не отправлю форму.Во время валидации не проверяется ни один элемент, и во время рендеринга формы, заполненной такими данными, я получаю сообщение об ошибке из класса Zend_View_Abstract, что экранирующее значение является массивом вместо строки (этот метод вызывается во время рендеринга элемента для экранирования его значения).1012 * Для завершения, если я вызову $ form-> getValues ();после проверки (по javascript добавлен еще один набор полей) я получаю следующее:
Array
(
[items] => Array
(
[questions] => Array
(
[0] => lorem
[1] => dolor
)
[answers] => Array
(
[0] => ipsum
[1] => sit
)
)
)
Может кто-нибудь посоветовать мне, как вести себя в форме?Идеальным решением было бы, когда сами формы проверяли каждое значение отдельно и находили, сколько раз он должен отображать fieldset (displayGroup).