0

複数の資格を追加するシナリオがあり、次のような非表示フィールドに値を保存しています。

 $("<input/>",{type:'hidden',value:deg,name:'degree[]'}).attr("data-deg",deg).appendTo("form");

$("<input/>",{type:'hidden',value:year,name:'year[]'}).attr("data-year",year).appendTo("form");

$("<input/>",{type:'hidden',value:inst,name:'inst[]'}).attr("data-inst",inst).appendTo("form");

var_dumpを実行すると、次の出力が表示されます

["degree"]=> array(2) { [0]=> string(4) "M.Sc" [1]=> string(4) "B.Sc" }

コントローラーで私はそれを次のように取得します

$Degree = $form->getValue('degree[]'); 

しかし、var_dump($ Degree)は私にNULLを与えます、どうすれば値を取得できますかplz help

編集

これが私のフォームのようです

$degreename = $this->createElement('select', 'degreename')
        ->setRequired(true);
        $degreename->removeDecorator('label');
        $degreename->removeDecorator('htmlTag');
        $degreename->removeDecorator('Errors');
        $ddloptions = $this->db->GetDegrees();
        $degreename->setMultiOptions($ddloptions);
        $degreename->addMultiOptions(array(
                '0'=>'--Select Degree--'
        ));
        $degreename->setValue(0);


        $passingyear = $this->createElement('select', 'passingyear')
        ->setRequired(true);
        $passingyear->removeDecorator('label');
        $passingyear->removeDecorator('htmlTag');
        $passingyear->removeDecorator('Errors');
        $passingyear->addMultiOptions(array(
                '0'=>'--Select Passing Year--',
                '1950'=>'1950',
                '1951'=>'1951',
                '1952'=>'1952',
        )
        );
        $passingyear->setValue('0');


$institute = new Zend_Form_Element_Text('institute');
$institute->setRequired(false)
->addFilter('StripTags')
->addFilter('StringTrim');
$institute->removeDecorator('label');
$institute->removeDecorator('htmlTag');
$institute->removeDecorator('Errors');

degreenameとは必須ですがpassing year、常にユーザー0 instituteに設定した値がfalseあり、複数の資格を追加できます。ユーザーを選択するたびに、上記のような非表示のフィールドを追加します。

4

2 に答える 2

2

次数のインスタンスを作成するときは、それを配列として設定してください

  $degree = new Zend_Form_Element_Hidden('degree');
  $degree->setIsArray(true);

$form->degree->getValue() ; //will return array ;

于 2012-04-16T06:26:55.203 に答える
1

どうですか

$Degree = $form->getValue('degree'); 
'degree[]' is not a proper key in php and the POST request

更新1:
非表示の要素に対するJavascriptのピースはまだ少し戸惑っていますが、$formに「degree」要素があるのではないかと思います。最終的な答えを得るには、$form内で何を使用しているかを知っておくとよいでしょう。

送信されたデータが(そのままで)必要な場合は、$_POSTから情報を取得するだけで問題ありません。そのためにZend_Formは必要ありません。

UPDATE2:
持ち上げると、フォームコードが霧になります。あなたはあなたの隠された要素のための要素を失っています。電話をかけるisValid($_POST)と、データを検証するためのフォームがありません。非表示の要素を呼び出すgetValue('degree')か、実際にはいずれかを呼び出すと、NULLが返されます。

データだけが必要な場合は、$ _ POSTだけで問題ありませんが、それは実際には安全なデータ処理ではありません。Zend_Form要素を使用すると、データをサニタイズするためのフィルターとバリデーターを追加できます。そのためには、Zend_Formを使用して非表示の要素を作成するか(値を追加するためにのみJavascriptを使用)、検証にのみ使用する要素をフォームに含める必要があります。のようなものを使用if ( !empty($_POST) )して、検証のためにそれらを追加できます。

于 2012-04-15T15:52:28.320 に答える