Zend_Form_SubForm нивелирует массив обозначений с помощью getValues ​​() - PullRequest
1 голос
/ 05 августа 2010

Я работаю с серией форм, в которые вложены субформы, и пытаюсь выяснить, могу ли я заставить 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 ]

3 голосов
/ 10 февраля 2011

Вы можете сделать это довольно просто, используя:

$subform->setIsArray(false);
1 голос
/ 05 августа 2010

Примерно так может быть началом:

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