Установка и восстановление элементов на основе массива Zend_Form - PullRequest
2 голосов
/ 18 сентября 2011

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

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

Спасибо за вашу помощь заранее.

1 Ответ

1 голос
/ 18 сентября 2011

Вы добавляете один и тот же элемент при каждом проходе цикла.Вторым параметром 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'])
  ));
}

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

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

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

...