2009-10-28 5 views
5

I'want:Zend_Formの配列表記と空要素名

<input type="text" value="" name="foo[]" /> 
<input type="text" value="" name="bar[]" /> 

が、Zend_Form_Elementには、(文字列)の名前を必要とするので、私は実行する必要があります。

$this->addElement('text', '1', array(
    'belongsTo' => 'foo' 
)); 

$this->addElement('text', '2', array(
    'belongsTo' => 'bar' 
)); 

が、出力は次のようになります。

<input id="foo-1" type="text" value="" name="foo[1]" /> 
<input id="bar-2" type="text" value="" name="bar[2]" /> 

私はまたのような出力を受け入れることができます

<input id="foo-1" type="text" value="" name="foo[1]" /> 
<input id="bar-1" type="text" value="" name="bar[1]" /> 

が、同じ名前

で要素を書き換えるZend_Form_Elementに私が必要なものを行う方法はありますか?

+0

私は同じが欲しい!あなたが解決すれば教えてください。 –

答えて

7

$foo = new Zend_Form_Element_Text('foo'); 
// Other parameters 
$foo->setIsArray(TRUE); 
$this->addElement($foo); 

は生成:name="foo[]"

-

あなたは、このような name="foo[bar]"として与えられたキーを探しているなら、次のコマンドを使用します。

$bar= new Zend_Form_Element_Text('bar'); 
// Other parameters 
$bar->setBelongsTo('foo'); 
$this->addElement($bar); 

- -

ZF 1.11.5でテスト済み

0

クラスMyFooFormはZend_Formの{ パブリック関数init(){ $ fullNameOpts =配列は( は=>偽、 'ラベル' => 'のfullName' 'を必要' 'でIsArray' => trueを、 'に延びバリデーター=>配列(array( 'stringLength'、false、array(1、250))) ); $ this-> addElement( 'text'、 'fullName'、$ fullNameOpts);要素、フォームやものの //残りはここ }}

行くと、それはそれは、フォーム、ライン512 "でIsArray" チェックで、Element.php上だ

<dd id="fullName-element"><input type="text" class="inputAccesible" value="" id="fullName"name="fullName[]"></dd> 

を作成しません。 私は通常のzend_form、crossValidationをカスタムバリデータで使用しています。サブフォームをプッシュしてメインフォームを複製しています。ユーザーは同じフォームを何度も追加できます。 さらに、私はでもカスタムデコレータを研究するのは怠惰です。私は1つを作成しましたが、サブフォームと配列表記を使用しないので、普通のものに固執して解決します。

私はZf 1.10です。複数の値について

+0

しかし、一般的に、空の配列表記法を使うと、同じ名前のフィールドがたくさんあります。あなたが新しいフィールドfullName []を期待している同じ名前の新しい要素を作成しようとすると、これはうまくいきません。 –

+0

いくつかのコードを投稿すれば、手を差し上げます:)。 私はこれに対処するためのライブラリを作っていました。私の次の目標は特にそうです。 あなたは1つのフォームしか持っておらず、フォームの1つの要素だけを*複製*する必要があります。 –