У меня возникли трудности с настройкой Zend_Form. У меня есть подкласс класса Zend_Form. Форма содержит некоторую требуемую информацию и некоторую дополнительную информацию. Я хочу, чтобы дополнительная информация была доступна через массив. Представленные данные будут выглядеть примерно так:
$formData['required1'] $formData['required2'] $formData['addiotnalData']['aData1'] $formData['addiotnalData']['aData2']
Я искал это и пробовал все предложения, которые я нашел (используя subForms и установив методы Zend_Form::setIsArray($flag)
и Zend_Form::setElementsBelongTo($array)
), но не понял, как это сделать.
Что я делаю не так? Как установить имена элементов формы, чтобы я мог получить доступ к данным с помощью нотации массива?
Отсортировано! Проблема заключается в обычном декораторе, который использовался.
//In $subForm = new Form_SubForm(); //this can be a Zend_Form or Zend_Form_SubForm $subForm->setIsArray(true); $this->addSubForm($subForm, 'subform');
Элементы будут отображаться с идентификатором subform-elementname
и именем subform[elementname]
.
Чтобы расширить ответ, потому что $ form-> setIsArray (TRUE) не работал с моим пользовательским декоратором для элементов. Для визуализации Zend_Form_Element был нужен собственный декоратор ViewScript.
Проблема заключалась в рендеринге имени элемента с помощью $ this-> element-> getName (). Мне пришлось использовать $ this-> element-> getFullyQualifiedName () в скрипте декоратора ViewScript.