# 繞過CodeIgniter前端送出post後checkbox、radio空值欄位會消失的問題 ###### tags: `PHP`,`CodeIgniter4`,`html` ## 發現 不知為啥送出後所有checkbox、radio的空值欄位皆不會送出資料 印象中沒勾選, 前端也要送出一個空值的欄位才對~ 難怪在後端會直接出現找不到此索引的錯誤... 暫時不知道怎麼解決這個問題, 那就先繞過問題!!  ## 前端: 因此在設定前端預設值的時候, 可以多一個是否是post的判斷, 若是post但沒有該欄位資料就給予預設值 ``` <div class="col-auto"> <div class="custom-control custom-checkbox"> <input type="checkbox" class="custom-control-input" id="chk_noDel" name="chk_noDel" <?= $request->getVar('chk_noDel') || empty($_POST) ? 'checked' : '' ?> /> <label class="custom-control-label" for="chk_noDel">不含刪除</label> </div> </div> ``` ## 後端: 如果直接使用 $_POST['XX']會因為**前端沒送出這個欄位**跳警告, 若要用 `array_key_exists('XX', $_POST)? $_POST['XX'] : ''` 太長... 改用\Config\Services::request()就可以了 /** @var IncomingRequest */ $request = \Config\Services::request(); - $request->getVar() - $request->getGet() - $request->getPost() - $request->getServer() - $request->getCookie() ex. $data = $request->getVar('chk_noDel'); 若要自訂預設值有兩種方式 1. 使用`?:` : $request->getPost() ?: 'default' 2. 參考以下文章自行override [CodeIgniter POST/GET default value](https://stackoverflow.com/questions/28622113/codeigniter-post-get-default-value)
×
Sign in
Email
Password
Forgot password
or
By clicking below, you agree to our
terms of service
.
Sign in via Facebook
Sign in via Twitter
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
New to HackMD?
Sign up