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,我怎样才能得到值请帮忙

编辑

这是我的表格

$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');

尽管 thedegreename和 thepassing year是必需的,但它们始终具有0 institutefalse为用户设置的值,可以添加多个资格,并且在每个用户选择时,我添加一个隐藏字段,如上所示

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

UPDATE1:
你的隐藏元素的Javascript片段仍然让我有点困惑,我想知道你是否在$form中有一个“学位”元素。要获得最终答案,最好了解您在 $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 回答