我有两个实体涉及到这个问题。用户可以拥有一个带有多个装备的事件。我需要一个表单,用户可以输入小时和投资回报率的那件设备在那个特定的事件。在这种情况下,设备实际上是位于其他两个实体(设备和事件)中间的实体,用于创建带有额外参数的多对多。所以设备有"小时"answers"投资回报率"。我想有我的形式动态添加了一个小时的领域和投资回报率为每件设备上的事件。我可以做到这一点。我有问题的部分,是添加元素的形式。一个页面,我一直在看,试图帮助我: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'])
));
}
(通过将ID附加到每个元素名称/标识符)。
可能有其他的解决方案,但是您总是需要为添加到表单中的每个元素提供唯一的标识符。
希望有帮助,