上次已經完成取得清單資料等API,今日我們就接下去完成新增、修改與刪除。
同樣的我們先打開controllers/Api.php
:
// 新增資料
function to_work_insert($path_name, $func_name, $data) {
}
我們同樣在裡面加入先前的資料:
$methods = $this->config->item('routes_table');
$table = $methods[$path_name]['table'];
$info = $methods[$path_name]['detals'][$func_name];
// 驗證需要的元素
$required = array();
foreach ($info['require'] as $keyRequired => $valueRequired) {
if (!isset($data[$valueRequired])) array_push($required, $valueRequired);
}
// 如果缺少資源跳出
if (sizeof($required) > 0) {
$json_arr = $this->mod_config->msgResponse((isset($json_arr))?$json_arr:array(), 'error', 'MISSING_DATA', $this->language);
$json_arr['requred'] = $required;
return $json_arr;
}
接著是要新增的資料:
// 負責寫入元素內容
$query = array();
foreach ($info['query'] as $key => $value) {
if (isset($data[$key])) $query[$key] = $data[$key];
}
另外我們可能會有一些預設的值,此部分我們先做稍後再加入函式:
// 加入預設條件
$query = array_merge($query, $this->set_default_data($info['default']));
接著再呼叫通用函式並回傳結果:
// 加入邏輯佇列
$dataQuery['data'] = $query;
$dataQuery['table'] = $table;
$response = $this->mod_universal->insert($dataQuery);
$json_arr['response'] = $response;
$json_arr = $this->mod_config->msgResponse((isset($json_arr))?$json_arr:array(), 'success', 'GET_DATA_SUCCESS', $this->language);
return $json_arr;
如此一來就完成新增,接著我們在新增預設條件,內容可能會牽扯到特別的變數,例如像是時間戳等等:
// 寫入預設條件
function set_default_data($data) {
$res = array();
foreach ($data as $key => $value) {
if ($value == 'code_date') {
$res[$key] = date('Y-m-d');
} else if ($value == 'code_time') {
$res[$key] = date('H:i:s');
} else if ($value == 'code_timestamp') {
$res[$key] = time();
} else if ($value == 'code_uniqid') {
$res[$key] = uniqid(time());
} else {
$res[$key] = $value;
}
}
return $res;
}
如此一來就完成我們所需要的內容,接續著我們來到更新,基本上跟新增差不多,比較不同的是我們需要加入verify
的驗證與通用函式的不同:
// 修改資料
function to_work_update($path_name, $func_name, $data) {
}
同樣的加入必要的內容驗證:
$methods = $this->config->item('routes_table');
$table = $methods[$path_name]['table'];
$info = $methods[$path_name]['detals'][$func_name];
// 驗證需要的元素
$required = array();
foreach ($info['require'] as $keyRequired => $valueRequired) {
if (!isset($data[$valueRequired])) array_push($required, $valueRequired);
}
// 如果缺少資源跳出
if (sizeof($required) > 0) {
$json_arr = $this->mod_config->msgResponse((isset($json_arr))?$json_arr:array(), 'error', 'MISSING_DATA', $this->language);
$json_arr['requred'] = $required;
return $json_arr;
}
接著是如資料庫的where
:
// 負責驗證的元素
$verify = array();
foreach ($info['verify'] as $key => $value) {
if (isset($data[$value])) {
if ($key == '_id') {
$verify[$key] = new MongoId($data[$value]);
} else {
$verify[$key] = $data[$value];
}
}
}
下一步再加上寫入資料與預設內容:
// 負責寫入元素內容
$query = array();
foreach ($info['query'] as $key => $value) {
if (isset($data[$key])) $query[$key] = $data[$key];
}
// 加入預設條件
$query = array_merge($query, $this->set_default_data($info['default']));
最後再完成回傳值與通用函式就完成!
// 加入邏輯佇列
$dataQuery['data'] = $query;
$dataQuery['table'] = $table;
$response = $this->mod_universal->update($dataQuery);
$json_arr['response'] = $response;
$json_arr = $this->mod_config->msgResponse((isset($json_arr))?$json_arr:array(), 'success', 'GET_DATA_SUCCESS', $this->language);
return $json_arr;
緊接著就是刪除,這次刪除是去除data
,因為我們沒有要加入內容等等:
// 刪除資料
function to_work_delete($path_name, $func_name, $data) {
}
同樣加入驗證:
$methods = $this->config->item('routes_table');
$table = $methods[$path_name]['table'];
$info = $methods[$path_name]['detals'][$func_name];
// 驗證需要的元素
$required = array();
foreach ($info['require'] as $keyRequired => $valueRequired) {
if (!isset($data[$valueRequired])) array_push($required, $valueRequired);
}
// 如果缺少資源跳出
if (sizeof($required) > 0) {
$json_arr = $this->mod_config->msgResponse((isset($json_arr))?$json_arr:array(), 'error', 'MISSING_DATA', $this->language);
$json_arr['requred'] = $required;
return $json_arr;
}
接著加入verify
:
// 負責驗證的元素
$verify = array();
foreach ($info['verify'] as $key => $value) {
if (isset($data[$value])) {
if ($key == '_id') {
$verify[$key] = new MongoId($data[$value]);
} else {
$verify[$key] = $data[$value];
}
}
}
最後再加入通用函式與回傳內容就大功告成!
// 加入邏輯佇列
$dataQuery['data'] = $query;
$dataQuery['table'] = $table;
$response = $this->mod_universal->delete($dataQuery);
$json_arr['response'] = $response;
$json_arr = $this->mod_config->msgResponse((isset($json_arr))?$json_arr:array(), 'success', 'GET_DATA_SUCCESS', $this->language);
return $json_arr;
透過上述方法很快就了解通用函式的用法,未來我們也一併會一直使用通用函式,讓整個程式更有系統性的去撰寫。
Next station ... Date Library