Zend_Form - элементы на основе массива?

Используя Zend_Form, как мне создать такие элементы формы:

<input type="text" name="element[1]" value="" />
<input type="text" name="element[2]" value="" />
// etc...

person leek    schedule 02.01.2009    source источник


Ответы (2)


Вы можете использовать подчиненные формы:

$form = new Zend_Form();

$subForm = new Zend_Form_SubForm();
$subForm->addElement('Text', '1')
        ->addElement('Text', '2');

$form->addSubForm($subForm, 'element');

Или вы также должны иметь возможность использовать setBelongsTo() в элементах формы (непроверенные):

$form = new Zend_Form();
$form->addElement('Text', '1', array('belongsTo' => 'element'))
     ->addElement('Text', '2', array('belongsTo' => 'element'));
person Stefan Gehrig    schedule 02.01.2009
comment
Во-вторых, форма кажется более чистой и понятной и работает нормально (проверено). - person Victor Farazdagi; 13.04.2010
comment
Если у кого-то есть проблемы с проверкой, getValue () и т. Д. - см. Этот разрешенный тикет на трекере ZF: framework.zend.com/issues/browse/ZF-2563 - person Victor Farazdagi; 13.04.2010
comment
Я бы пошел с подформами, ownTo причинил мне множество неприятностей, потому что я хотел использовать повторяющиеся наборы составных полей (пример: поля улиц и почтовых адресов, которые я хочу разделять с идентично названными подполями). Используйте ownTo только для самых простых операций по группировке полей, в противном случае используйте подчиненные формы и избавьтесь от лишних хлопот. - person starmonkey; 02.11.2011

Я утверждаю, что setBelongsTo имеет низкое качество, поскольку невозможно установить значения по умолчанию. Итак, в настоящее время нет разумного способа достичь вашей цели.

person billy    schedule 21.06.2011