Php 添加相同类型的多个子窗体

Php 添加相同类型的多个子窗体,php,zend-framework,multidimensional-array,zend-form,subforms,Php,Zend Framework,Multidimensional Array,Zend Form,Subforms,我最近在处理表单和子表单 我创建了以下内容: $form = new Application_Form_Cv(); $experience = new Zend_Form_SubForm(); $form->addSubForm($experience, 'experience'); $experience->addSubForm(new Application_Form_Experience(), '0'); $experience->addSubForm(new Appl

我最近在处理表单和子表单

我创建了以下内容:

$form = new Application_Form_Cv();
$experience = new Zend_Form_SubForm();
$form->addSubForm($experience, 'experience');
$experience->addSubForm(new Application_Form_Experience(), '0');
$experience->addSubForm(new Application_Form_Experience(), '1');
我的数组中有一个元素
“experience”
,这要感谢

$form->addSubForm($experience, 'experience');.
当我尝试以下方法时:

$form = new Application_Form_Cv();
$experience = new Zend_Form_SubForm();
$form->addSubForm($experience, 'experience');
$experience->addSubForm(new Application_Form_Experience(), '0');
$experience->addSubForm(new Application_Form_Experience(), '1');
对象覆盖了自身,我只得到一个“experience”元素,0和1不存在

array (
  'controller' => 'cv',
  'action' => 'index',
  'module' => 'default',
  'CvName' => 'Cv Ingenieur informatique',
  'LanguageCode' => 'fr',
  'UserID' => '2',
  'experience' => 
  array (
    'CompanyName' => 'Mondial Assistance Ltd',
    'From' => '2002',
    'Until' => '2009',
    'Current' => '1',
  ),
  'submit' => 'Save CV',
)  
只有
Zend\u Form\u子表单
才能在数组中创建新键

  • 您的子窗体必须扩展Zend_Form_子窗体或模拟其行为(设置isArray并删除“Form”-decorator)
  • 不能添加两次Idemental对象,因此必须克隆它
  • 以下被剪断的部分应按预期工作

    $form = new Application_Form_Cv();
    $experience = new Zend_Form_SubForm();
    $form->addSubForm($experience, 'experience');
    
    $exForm = new Application_Form_Experience();
    $exForm->setIsArray(true);
    $exForm->removeDecorator('form');
    
    $experience->addSubForm($exForm, '0');
    $experience->addSubForm(clone $exForm, '1');
    $experience->addSubForm(clone $exForm, '2');