4

我正在使用窗體和子窗體。添加多個相同類型的子表單

我創建了以下內容:

$form = new Application_Form_Cv(); 
$experience = new Zend_Form_SubForm(); 
$form->addSubForm($experience, 'experience'); 

'experience'感謝我有我的數組中的元素,以

$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_Form_Subforms在數組中創建新的密鑰?

回答

6
  1. 你的子窗體不得不延長Zend_Form_SubForm的或模仿它的行爲(設置IsArray的和刪除「形式」 -decorator)
  2. 所以你要克隆它
您不能添加idenentical對象兩次

以下內容應該按預期工作

$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'); 
相關問題