Php Zend Framework 2复选框未选中的设置值不工作

Php Zend Framework 2复选框未选中的设置值不工作,php,zend-framework,checkbox,zend-framework2,Php,Zend Framework,Checkbox,Zend Framework2,我尝试将复选框值设置为false: $form->add(array( 'type' => 'Zend\Form\Element\Checkbox', 'name' => 'test_checkbox', 'options' => array( 'label' => 'Test checkbox', 'use_hidden_element' => false,

我尝试将复选框值设置为false:

$form->add(array(
        'type' => 'Zend\Form\Element\Checkbox',
        'name' => 'test_checkbox',
        'options' => array(
            'label' => 'Test checkbox',
            'use_hidden_element' => false,
            'checked_value' => 1,
            'unchecked_value' => 0,
        ),
        'attributes' => array(
            'value' => 0,
        ),
    ));
但由于本页包含以下内容:

<input type="checkbox" name="test_checkbox" value="1">

这个值没有改变,我不明白为什么

其他PHP和JS脚本不会更改此值


也许我误解了“checked\u value”、“unchecked\u value”和“value”的工作原理?

您的代码几乎是正确的。应该是:

$form->add(array(
    'type' => 'Zend\Form\Element\Checkbox',
    'name' => 'test_checkbox',
    'options' => array(
        'label' => 'Test checkbox',
        'use_hidden_element' => false,
        'checked_value' => 1,
        'unchecked_value' => 0,
    )
));
但我认为你误解了HTML复选框的工作原理。“值”属性应始终仅包含选中的值。浏览器仅在勾选复选框时提交此值。因此,当页面加载时,复选框将正确显示在源中,如下所示:

<input type="checkbox" name="test_checkbox" value="1">


为了获得未检查的值,ZF(以及我所知道的所有其他框架)将其添加到复选框上方的隐藏表单字段中。如果未勾选复选框,浏览器将提交隐藏的表单字段。

为什么要将
选中值
属性设置为不同的内容?您试图实现什么?值属性一次只能保留值。@timfuntain,checked_value和unchecked_value是true和false(1和0)的别名。值-必须是页面加载时复选框的默认值。@DCoder,您能解释一下吗?@felixMind这行的意思是其他PHP和JS脚本不更改此值。。?