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」要素を1つだけ取得し、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配列に新しいキーを作成するだけですか?

4

1 に答える 1

6
  1. サブフォームは、Zend_Form_SubFormを拡張するか、その動作を模倣する必要があります(isArrayを設定し、「form」デコレータを削除します)
  2. 同一のオブジェクトを2回追加することはできないため、クローンを作成する必要があります

次の切り取りは期待どおりに機能するはずです

$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');
于 2011-04-21T08:20:59.373 に答える