我有一个场景,我正在添加多个资格,我将值保存在隐藏字段中,如
$("<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
,用户可以添加多个资格和在每个用户选择时,我添加一个隐藏的字段,如上所示
答案 0 :(得分:2)
创建度数实例时,请将其设置为数组
$degree = new Zend_Form_Element_Hidden('degree');
$degree->setIsArray(true);
现在$form->degree->getValue() ; //will return array ;
答案 1 :(得分:1)
怎么样
$Degree = $form->getValue('degree');
'degree[]' is not a proper key in php and the POST request
<强> UPDATE1:强>
你隐藏元素的Javascript片段仍然让我感到困惑,我想知道你是否有$形式的“学位”元素。要得到最终答案,最好知道你在$ form中使用了什么。
如果您只需要提交的数据(按原样),您可以从$ _POST获取信息。你不需要Zend_Form。
<强> UPDATE2:强>
现在看到你的表格代码雾,如果提升;你错过了隐藏元素的元素。当您致电isValid($_POST)
时,表格中没有任何内容可以验证数据。调用getValue('degree')
或实际上任何隐藏元素都将返回NULL。
如果您只想要数据,只需$ _POST即可,但这不是真正安全的数据处理。 Zend_Form元素允许您添加过滤器和验证器以清理数据。为此,您必须使用Zend_Form创建隐藏元素(仅使用Javascript添加值)或在表单中使用仅用于验证的元素。您可以使用if ( !empty($_POST) )
之类的内容添加它们进行验证。