Как настроить Zend_Form для использования нотации массива?

У меня проблемы с настройкой Zend_Form. У меня есть подкласс Zend_Form. Форма содержит некоторую необходимую информацию и некоторую дополнительную информацию. Я хочу, чтобы дополнительная информация была доступна через массив. Представленные данные будут выглядеть примерно так:

$formData['required1']
$formData['required2']
$formData['addiotnalData']['aData1']
$formData['addiotnalData']['aData2']

Я погуглил и попробовал все предложения, которые нашел (с использованием подформ и установкой методов Zend_Form::setIsArray($flag) и Zend_Form::setElementsBelongTo($array)), но не понял, как это сделать.

Что я делаю неправильно? Как мне задать имена элементов формы, чтобы я мог получить доступ к данным в виде массива?


person Benedict Cohen    schedule 18.12.2009    source источник


Ответы (2)


Разобрал! Проблема в том, что использовался пользовательский декоратор.

//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].

person Benedict Cohen    schedule 18.12.2009
comment
Привет, у меня такая же проблема, и я внес изменения, о которых вы рассказали. Но это не работает по моим исключениям. как насчет нестандартных декораторов ??? - person Manish Jangir; 02.06.2014

Чтобы расширить ответ, потому что $ form-> setIsArray (TRUE) не работал с моим настраиваемым декоратором для элементов. Мой собственный декоратор ViewScript был необходим для рендеринга Zend_Form_Element.

Проблема заключалась в отображении имени элемента с помощью $ this-> element-> getName (). Мне пришлось использовать $ this-> element-> getFullyQualifiedName () в сценарии декоратора ViewScript.

person danielkarso    schedule 11.10.2013