Zend Framework 2 Checkbox setValue for unchecked无法正常工作

时间:2016-07-07 10:28:37

标签: 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,
            'checked_value' => 1,
            'unchecked_value' => 0,
        ),
        'attributes' => array(
            'value' => 0,
        ),
    ));

但由于此页面包含:

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

价值没有变化,我无法理解为什么。

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

也许我误解了&#34; checked_value&#34;,&#34; unchecked_value&#34;和&#34;价值&#34;作品?

1 个答案:

答案 0 :(得分:2)

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

$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(以及我所知道的所有其他框架)将其添加到隐藏的表单字段上面复选框。如果未选中该复选框,则浏览器将提交隐藏的表单字段。