Zend Framework 2 未选中的复选框 setValue 不起作用
Zend Framework 2 Checkbox setValue for unchecked not work
我试过将复选框值设置为 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_value"、"unchecked_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 复选框的工作原理。 value 属性应该 always 包含 only 检查的值。如果复选框被勾选,浏览器只会提交这个值。因此,当页面加载时,复选框将在源代码中正确显示为:
<input type="checkbox" name="test_checkbox" value="1">
为了实现未选中的值,ZF(以及我知道的所有其他框架)将其添加到复选框上方 的隐藏表单字段中。如果未勾选复选框,浏览器将提交隐藏的表单域。
我试过将复选框值设置为 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_value"、"unchecked_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 复选框的工作原理。 value 属性应该 always 包含 only 检查的值。如果复选框被勾选,浏览器只会提交这个值。因此,当页面加载时,复选框将在源代码中正确显示为:
<input type="checkbox" name="test_checkbox" value="1">
为了实现未选中的值,ZF(以及我知道的所有其他框架)将其添加到复选框上方 的隐藏表单字段中。如果未勾选复选框,浏览器将提交隐藏的表单域。