使用getValues()的Zend_Form_SubForm展平数组表示法

时间:2010-08-05 03:13:08

标签: php zend-framework zend-form zend-form-sub-form

我正在使用一系列嵌入了子表单的表单,如果我可以让getValues返回没有子表单上的数组表示法的值,我正在努力解决。

即:

$form = new Zend_Form();
$subForm = new Zend_Form_SubForm();
$form->addSubForm( $subForm, 'contact' );

$form->addElement(new Zend_Form_Element_Text('name'));
$subForm->addElement( new Zend_Form_Element_Text('phone') );

var_dump($form->getValues());

给我输出:

array(2) {
  ["name"]=>
  NULL
  ["contact"]=>
  array(1) {
    ["phone"]=>
    NULL
  }
}

但我真的希望输出为:

array(2) {
  ["name"]=>
  NULL
  ["phone"]=>
  NULL
}

在不重写Zend_Form函数的情况下执行此操作的任何简单方法都可以吗?

2 个答案:

答案 0 :(得分:3)

您可以使用以下方式完成此操作:

$subform->setIsArray(false);

答案 1 :(得分:1)

这样的事情可能是一个开始:

$data = array();
foreach ($form->getSubForms() as $subform) {
     $data += $subform->getValues();
}