上次我們新增第三方套件來取得GET
, POST
資料,並且驗證是否遺漏必填項目,這次我們一樣透過函式來返還漏填的內容。
我們可以同樣在libraries/Getpost.php
新增函式:
/**
* 檢查必填項目,沒有被填寫到的資料就會被丟回陣列回傳
*/
function report_required($requred, $type = 'GET') {
$CI =& get_instance(); // 載入CI元件
$CI->load->helper('url'); // 載入URL元件
$res = array(); // 結果都會儲存到內部
foreach ($requred as $key => $value) {
$item = '';
if ($type === 'GET') $item = $CI->input->get($value);
if ($type === 'POST') $item = $CI->input->post($value);
if($item == ""){
$res[] = $value;
}
}
return $res;
}
接著回到controllers/Unit.php
新增測試:
/**
* 測試GET/POST
*/
function test_getpost() {
$needsData = array('product_id', 'product_name', 'remark'); // 估計需要的值
$requiredData = array('product_id', 'product_name'); // 必填欄位
$data = $this->getpost->getpost_data($needsData, $requiredData, 'GET'); // 把結果丟到$data
if ($data) {
// 正確
$json_arr['response'] = 'success';
} else {
// 回報缺少的內容
$json_arr['requred'] = $this->getpost->report_required($requiredData, 'GET');
}
echo json_encode($json_arr); // 把結果印出來測試看看
}
接著只要沒有在必填名單上的都會被報出錯誤,並且回傳缺少的內容,這個時候很適合用在前台驗證欄位上面,接著我們透過網址測試:http://ip-address/unit/test_getpost?product_id=P1231425621&product_name=灰熊印貓罐頭
下一步我們在拿掉必要的product_name
試試看:http://ip-address/unit/test_getpost?product_id=P1231425621
如此一來我們就能如期顯示哪些尚未被填寫,
明天我們就再加個錯誤提示吧!
Next station ... 回傳錯誤與成功