Настройка элемента на основе массива Zend_Form и восстановление

У меня есть два объекта, вовлеченных в эту проблему. У пользователя может быть событие, в котором есть несколько предметов, привязанных к нему. Мне нужна форма, которую пользователь может ввести в часы и роу для этого оборудования в этом конкретном случае. Оборудование в этом случае на самом деле является сущностью в середине двух других объектов (оборудования и события), чтобы создать множество ко многим с дополнительными параметрами. Поэтому у оборудования есть поля «часы» и «рой». Я хотел бы, чтобы моя форма динамически добавляла поле часами и roi для каждой единицы оборудования на мероприятии. Я могу подняться до этой части. У меня есть вопросы, добавляющие элементы в форму. Страница, на которую я искал, чтобы попытаться помочь мне: Zend_Form – Элементы на основе массива? ,

Однако в этом вопросе они, похоже, не делают то же самое, что я хотел бы сделать.

Вот что я имею прямо сейчас:

foreach ($event['equipment'] as $equipment) { $form->addElement('text', 'roi', array( 'label' => $equipment['equipment']['model'] . ' ROI', 'required' => true, 'belongsTo' => strval($equipment['id']) )); $form->addElement('text', 'hours', array( 'label' => $equipment['equipment']['model'] . ' Hours', 'required' => true, 'belongsTo' => strval($equipment['id']) )); } 

Однако с помощью этого метода отображается только последняя информация об оборудовании. Если есть способ установить это, о чем я не думаю, пожалуйста, дайте мне знать. Мне просто нужно разобраться с массивом данных в конце, и я смогу его оттуда оттуда.

Заранее благодарны за Вашу помощь.

Вы добавляете один и тот же элемент в каждый проход цикла. Второй параметр addElement – это идентификатор элемента ( roi и hours в вашем случае).

Возможной альтернативой может быть следующее:

 foreach ($event['equipment'] as $equipment) { $form->addElement('text', 'roi' . $equipment['id'] , array( 'label' => $equipment['equipment']['model'] . ' ROI', 'required' => true, 'belongsTo' => strval($equipment['id']) )); $form->addElement('text', 'hours' . $equipment['id'], array( 'label' => $equipment['equipment']['model'] . ' Hours', 'required' => true, 'belongsTo' => strval($equipment['id']) )); } 

(путем добавления идентификатора к каждому имени / идентификатору элемента).

Могут быть другие решения, но вам всегда нужно иметь уникальные идентификаторы для каждого элемента, который вы добавляете в форму.

Надеюсь, это поможет,