具有键值问题的Zend复选框数组

时间:2011-11-03 12:42:23

标签: php zend-framework checkbox zend-form zend-form-element

我对zend的zend_form_element_checkbox有疑问。

我有一个包含多个复选框的表单。当我发送此表单时,我逻辑上会收到一系列看起来像这样的参数:

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 个答案:

答案 0 :(得分:2)

尝试:

$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()访问器确定名称。

答案 1 :(得分:0)

试试这个

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