Добавить много выбранных элементов с [] в названии - PullRequest
2 голосов
/ 21 сентября 2010

Я хочу иметь возможность добавить к Zend_Form много Zend_Form_Element_Select.

У меня есть цикл в My_Form_Selects extends Zend_Form с

$element = $this->createElement('Select', 'element[]');
$this->addElement($element);

, но создает только один элемент выбора (Zend_Form игнорирует [] в имени элемента).

Как мне это сделать?

1 Ответ

2 голосов
/ 21 сентября 2010

Вы пробовали:

$foo = new Zend_Form_SubForm();
$foo->setElementsBelongTo('foo')
    ->setElements(array(
        'bar' => 'text',
        'baz' => 'text'
    ));
echo $foo;

, что приводит к HTML что-то вроде:

<input type="text" name="foo[bar]" id="foo.bar" value="" />
<input type="text" name="foo[baz]" id="foo.baz" value="" />

через

из manual :

Zend_Form :: setIsArray ($ flag) : установив флаг TRUE, вы можете указать, что вся форма должна рассматриваться как массив.По умолчанию имя формы будет использоваться в качестве имени массива, если только не было вызвано setElementsBelongTo () .Если форма не имеет указанного имени или setElementsBelongTo () не была установлена, этот флаг будет игнорироваться (так как нет имени массива, которому могут принадлежать элементы).

Вы можете определить, обрабатывается ли форма как массив с помощью метода доступа isArray () .

Zend_Form :: setElementsBelongTo ($ array) : используя этот метод,Вы можете указать имя массива, к которому принадлежат все элементы формы.Вы можете определить имя, используя getElementsBelongTo () accessor.

...