求める結果を得るには、サブフォームを使用する必要があります。ドキュメントはかなりの乗り物でしたが、ここで見つけることができます
そこで見つけたものを使用して、次のformLを作成しました
<?php
class Form_Test extends Zend_Form {
public function init() {
$this->setMethod('post');
$this->setIsArray(true);
$this->setSubFormDecorators(array(
'FormElements',
'Fieldset'
));
$subForm = new Zend_Form(array('disableLoadDefaultDecorators' => true));
$subForm->setDecorators(array(
'FormElements',
));
$subForm->addElement('hidden', 'contacts', array(
'isArray' => true,
'value' => '237',
'decorators' => Array(
'ViewHelper',
),
));
$subForm2 = new Zend_Form(array('disableLoadDefaultDecorators' => true));
$subForm2->setDecorators(array(
'FormElements',
));
$subForm2->addElement('hidden', 'contacts', array(
'isArray' => true,
'value' => '456', 'decorators' => Array(
'ViewHelper',
),
));
$this->addSubForm($subForm, 'subform');
$this->addSubForm($subForm2, 'subform2');
$submit = new Zend_Form_Element_Submit('submit');
$submit->setValue('Submit');
$this->addElement('submit', 'submit');
}
}
Wichはこのhtmlを出力します:
<form enctype="application/x-www-form-urlencoded" method="post" action=""><dl class="zend_form">
<input type="hidden" name="contacts[]" value="237" id="contacts">
<input type="hidden" name="contacts[]" value="456" id="contacts">
<dt id="submit-label"> </dt><dd id="submit-element">
<input type="submit" name="submit" id="submit" value="submit"></dd></dl></form>
送信すると、投稿は次のようになります。
array(2) {
["contacts"] => array(2) {
[0] => string(3) "237"
[1] => string(3) "456"
}
["submit"] => string(6) "submit"
}
それで、あなたが求める種類のフォームを作成する方法です。お役に立てれば!質問がある場合はコメントを投稿してください!
あなたが私に尋ねれば、それはかなりハックです。基本的にサブフォームを作成しますが、フォームデコレータを無効にして、要素だけが出力されるようにします。同一のcontacts[]要素は異なる形式であるため、オブジェクトzendはそれらを上書きせず、機能します。しかし、ええ..
編集:ラベルを削除し、非表示の入力をゴミで囲むように少し変更しました。