0

以这种方式创建复选框

 $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">

在此处输入图像描述

这是 $personal_data 数组 img

4

1 回答 1

2

它根本无法按照您期望的方式运行。

来自 Zend 手册:

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

您可以通过在控制器中使用类似这样的东西(未经测试!)来做一些解决方法popuplate()

if($personal_form->is_conveyance_required->getValue() == 1) {
   $personal_form->is_conveyance_required->setChecked(true);
}
于 2013-05-24T07:24:58.743 回答