3 回答
TA贡献1856条经验 获得超11个赞
你有一些选择。
假设如果缺少该人没有选中该框。
确保你总是得到一些东西,无论是假的还是真的,或者你可以控制的一些已知值。
对于解决方案 #1:检查 $_POST 使用array_key_exists
. 如果它返回 false,那么“privacy”的值为 false。
对于解决方案 #2:这是复选框的常见问题。解决方案是添加一个与复选框同名的隐藏输入,并将其设置为 false 或 0。在 HTML 中,确保隐藏输入位于实际复选框之前。当该人输入表单但未选中该框时,将发送隐藏输入的值。如果他们确实选中了该框,则复选框值将覆盖隐藏的输入值。这样你总能得到一些东西。
...
<input type="hidden" name="privacy" value="0" />
<input type="checkbox" name="privacy" />
...
TA贡献1801条经验 获得超16个赞
甚至在您检查它是否已设置之前validatePrivacy()就打电话$this->data['privacy']给您,这就是给您带来Undefined index: privacy错误的原因。
您可以尝试将validatePrivacy()功能更改为:
private function validatePrivacy()
{
if (empty($this->data['privacy']) {
$this->addError('privacy', 'The privacy checkbox is required.');
}
}
TA贡献1866条经验 获得超5个赞
目前尚不清楚您希望保持什么价值$privacy,最后应该是一个布尔值吗?如果是这样,试试这个:
<?php
// Will set to a bool (true if checked, false otherwise)
$privacy = (!empty($_POST['privacy']));
// Will set to a string ('Yes' if checked, 'No' otherwise)
$privacy = (!empty($_POST['privacy']) ? 'Yes' : 'No');
- 3 回答
- 0 关注
- 85 浏览
添加回答
举报