Добавить несколько подчиненных форм одного типа - PullRequest
4 голосов
/ 21 апреля 2011

В последнее время я работаю с формами и суб формами.

Я создал следующее:

$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');

Объект перезаписывает себя, и я получаю только один элемент 'опыта', а 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 создает новые ключи в массиве?

1 Ответ

6 голосов
/ 21 апреля 2011
  1. Ваши подчиненные должны расширять Zend_Form_SubForm или имитировать его поведение (установите isArray и удалите -decorator "form")
  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');
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...