У меня есть два объекта, вовлеченных в эту проблему. У пользователя может быть событие, в котором есть несколько предметов, привязанных к нему. Мне нужна форма, которую пользователь может ввести в часы и роу для этого оборудования в этом конкретном случае. Оборудование в этом случае на самом деле является сущностью в середине двух других объектов (оборудования и события), чтобы создать множество ко многим с дополнительными параметрами. Поэтому у оборудования есть поля «часы» и «рой». Я хотел бы, чтобы моя форма динамически добавляла поле часами и 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']) )); }
(путем добавления идентификатора к каждому имени / идентификатору элемента).
Могут быть другие решения, но вам всегда нужно иметь уникальные идентификаторы для каждого элемента, который вы добавляете в форму.
Надеюсь, это поможет,