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 關注
- 108 瀏覽
添加回答
舉報