show(),其預設內容如下:
//以流水號秀出某筆 submission 資料內容 Submission::show()
public static function show($where_arr = [], $other_arr = [], $mode = '')
{
global $xoopsTpl;
if (empty($where_arr)) {
redirect_header($_SERVER['HTTP_REFERER'], 3, "無查詢條件:" . __FILE__ . __LINE__);
}
$all = self::get($where_arr, $other_arr);
if (empty($all)) {
return false;
}
foreach ($all as $key => $value) {
$value = Tools::filter($key, $value, 'read', self::$filter_arr);
$all[$key] = $value;
$$key = $value;
}
//將 uid 編號轉換成使用者姓名(或帳號)
$uid_name = Utility::get_name_by_uid($uid);
$xoopsTpl->assign('uid_name', $uid_name);
$SweetAlert = new SweetAlert();
$SweetAlert->render('submission_destroy_func', "{$_SERVER['PHP_SELF']}?op=submission_destroy&id=", "id");
if ($mode == "return") {
return $all;
} elseif ($mode == "assign_all") {
$xoopsTpl->assign('submission', $all);
} else {
foreach ($all as $key => $value) {
$xoopsTpl->assign($key, $value);
}
}
}
$where_arr = [] 就是篩選資料用的,陣列格式,會用 and 串接
['id' => 1],SQL語法便會轉換為 WHERE 1 AND `id` = '1' ['start > NOW()', 'end < NOW()'],SQL語法便會轉換為 WHERE1 AND start > NOW() and end < NOW() ['NOW() BETWEEN start AND end'],SQL語法便會轉換為 WHERE1 AND NOW() BETWEEN start AND end$other_arr = [] 用來作為彈性擴增,晚點若有用到再說$mode 的值若為 return,則會傳回值,而非直接 assign到樣板。
if (empty($where_arr)) {
redirect_header($_SERVER['HTTP_REFERER'], 3, "無查詢條件:" . __FILE__ . __LINE__);
}
$all = self::get($where_arr, $other_arr);
if (empty($all)) {
return false;
}
foreach ($all as $key => $value) {
$value = Tools::filter($key, $value, 'read', self::$filter_arr);
$all[$key] = $value;
$$key = $value;
}
$where_arr若是沒有值,會顯示無查詢條件,並回到上頁($_SERVER['HTTP_REFERER']),redirect_header() 則是XOOPS內建的轉向函數 self::get($where_arr, $other_arr) 來擷取單一筆資料並將值放入 $all,若 $all 沒資料就直接傳回空值。$all 資料,則依序用 Tools::filter() 來過濾變數,並存回 $all 中,順便重製出各個欄位的變數值,例如: $id、$start、$end....等Utility::get_name_by_uid($uid) 來擷取此使用者的姓名,並且用 $xoopsTpl->assign() 送到樣板:
//將 uid 編號轉換成使用者姓名(或帳號)
$uid_name = Utility::get_name_by_uid($uid);
$xoopsTpl->assign('uid_name', $uid_name);

SweetAlert 來做刪除確認
use XoopsModules\Tadtools\SweetAlert;
render() 需要三個參數,第一個是javascript的呼叫名稱,第二個參數就是要執行刪除的網址,第三個參數則是根據哪個欄位值來刪除。SweetAlert 詳細用法可以看這裡link to https://github.com/tad0616/tadtools/blob/master/class/FormValidator.php _blank
$SweetAlert = new SweetAlert();
$SweetAlert->render('submission_destroy_func', "{$_SERVER['PHP_SELF']}?op=submission_destroy&id=", "id");
$mode 來決定是要傳回還是送至樣板
if ($mode == "return") {
return $all;
} elseif ($mode == "assign_all") {
$xoopsTpl->assign('submission', $all);
} else {
foreach ($all as $key => $value) {
$xoopsTpl->assign($key, $value);
}
}
$mode 的值若為 return,則會傳整個 $all 陣列$mode 的值若為 assign_all,則會將整個 $all 陣列傳到樣板$mode 的不是上述兩種,則會依序將 $all 陣列拆解成單一變數,然後依序傳到樣板(這是預設)