Массив флажков Zend с выдачей ключа - PullRequest
1 голос
/ 03 ноября 2011

У меня есть вопрос о zend_form_element_checkbox от zend.

У меня есть форма с несколькими флажками. И когда я отправляю эту форму, я логически получаю массив параметров, которые выглядят так:

array("controller" => my_controller, ...., "checkbox_name" => array ("0" => firstCheckedValue, "1" => secondCheckedValue, ...) )

Я создаю каждый элемент следующим образом:

$checkbox = new Zend_Form_Element_Checkbox('checkbox_name');
$checkbox->setCheckedValue($valueVar)->setIsArray(true);
$this->addElement($checkbox);

И я отображаю каждый из них так:

$this->form->checkbox_name->renderViewHelper();

Но я бы хотел получить формат полученных параметров следующим образом:

array("controller" => my_controller, ...., "checkbox_name" => array ("firstCheckedValue" => false, "secondCheckedValue" => true, ...) )

Другими словами, я хочу, чтобы флажки HTML выглядели так:

<input type="checkbox" value="true" name="checkbox_name[firstCheckedValue]">
<input type="checkbox" value="false" name="checkbox_name[secondCheckedValue]">
...

(логическое значение не для проверенного состояния флажка).

Как я могу это сделать?

Ответы [ 2 ]

2 голосов
/ 04 ноября 2011

Попробуйте:

$checkbox = new Zend_Form_Element_Checkbox('first');
$checkbox->setCheckedValue($valueVar)->setIsArray(true)->setBelongsTo('checkbox_name');
$this->addElement($checkbox);
$checkbox = new Zend_Form_Element_Checkbox('second');
$checkbox->setCheckedValue($valueVar)->setIsArray(true)->setBelongsTo('checkbox_name');
$this->addElement($checkbox);

Документы: http://framework.zend.com/manual/en/zend.form.advanced.html

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

0 голосов
/ 03 ноября 2011

Попробуйте это

$checkbox = new Zend_Form_Element_Checkbox('checkbox_name');
$checkbox->attribs(array('name' => 'impression[' . $valueVar . ']');
$checkbox->setCheckedValue($valueVar)->setIsArray(true);
$this->addElement($checkbox);
...