使用Zend Form检查复选框

时间:2013-05-24 06:20:11

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

以这种方式创建复选框

 $is_conveyance_required = new Zend_Form_Element_Checkbox(FORM_CHECKBOX_PREFIX . 'is_conveyance_required', array());

   $is_conveyance_required->addDecorators(array(
        array('HtmlTag', array('tag' => 'label')),
        array('Label', array('tag' => '')),
   ));

   $is_conveyance_required->setValue(1);
   $is_conveyance_required->setChecked( true );
   $this->addElement($is_conveyance_required);

以及如何填充表单

$personal_form->populate($personal_data);

但是zend表格没有填充复选框...

<input type="checkbox" value="1" id="chk_is_conveyance_required" name="chk_is_conveyance_required">

enter image description here

这是$ personal_data array img

1 个答案:

答案 0 :(得分:2)

根本没有按照你期望的方式运作。

来自Zend手册:

  

默认情况下,选中的值为“1”,未选中的值为“0”。您   可以使用setCheckedValue()和指定要使用的值   setUncheckedValue()访问器分别。另外,设置   value设置复选框的checked属性。你可以查询一下   使用isChecked()或只是访问属性。使用   setChecked($ flag)方法也将设置标志的状态   在元素中设置适当的选中或未选中的值。   设置复选框的选中状态时请使用此方法   元素,以确保正确设置值。

你可以在你的控制器中使用类似这样的东西(未经测试!)作为popuplate()

的补充来做一些解决方法
if($personal_form->is_conveyance_required->getValue() == 1) {
   $personal_form->is_conveyance_required->setChecked(true);
}