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