動的に拡張可能なzendフォームのヘルプが必要です。動的に拡張可能な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>
私は、次の手順でそれを得た:
私は2つの要素が含まれているサブフォームでフォームを、持っている
$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クラスからエスケープする値が文字列ではなく配列であるというエラーメッセージが表示されます(このメソッドは、その値をエスケープする要素をレンダリングするときに呼び出されます)。
私が$ form-> getValues()を呼び出した場合、compltionのために;検証、(ジャバスクリプトにより別のフィールドセットが追加された)後、私はこれを取得:
Array
(
[items] => Array
(
[questions] => Array
(
[0] => lorem
[1] => dolor
)
[answers] => Array
(
[0] => ipsum
[1] => sit
)
)
)
誰かが形成するように動作する方法を私に助言してもらえますか?理想的な解決策は、フォーム自体がそれぞれの値を別々に検証し、フィールドセット(displayGroup)を何回レンダリングすればよいかを見つけることです。