class/Submission.php
中的 index()
,其預設內容如下:
//列出所有 submission 資料 Submission::index()
public static function index($where_arr = [], $other_arr = [], $view_cols = [], $order_arr = [], $amount = '')
{
global $xoopsTpl, $xoTheme;
if ($amount) {
list($all_submission, $total, $bar) = self::get_all($where_arr, $other_arr, $view_cols, $order_arr, null, null, 'read', $amount);
$xoopsTpl->assign('bar', $bar);
$xoopsTpl->assign('total', $total);
} else {
$all_submission = self::get_all($where_arr, $other_arr, $view_cols, $order_arr);
}
$xoopsTpl->assign('all_submission', $all_submission);
Utility::test($all_submission, 'all_submission');
//刪除確認的JS
$SweetAlert = new SweetAlert();
$SweetAlert->render('submission_destroy_func', "{$_SERVER['PHP_SELF']}?op=submission_destroy&id=", "id");
BootstrapTable::render();
}
$where_arr = []
就是篩選資料用的,陣列格式,會用 and
串接
['id' => 1]
,SQL語法便會轉換為 WHERE 1 AND `id` = '1'
['start > NOW()', 'end < NOW()']
,SQL語法便會轉換為 WHERE 1 AND start > NOW() and end < NOW()
['NOW() BETWEEN start AND end']
,SQL語法便會轉換為 WHERE 1 AND NOW() BETWEEN start AND end
$other_arr = []
用來作為彈性擴增,晚點若有用到再說$view_cols
用來指定只要抓取指定欄位,例如 ['id', 'title']
代表只要編號和標題兩個欄位值,空值代表所有欄位都要。$order_arr
用來設定排序規則
['start']
表示根據 start 欄位由小到大來排序,SQL語法等同 ORDER BY start ASC
['create_time' => 'DESC']
表示根據 create_time 欄位由大到小來排序,SQL語法等同 ORDER BY create_time DESC
['uid', 'create_time' => 'DESC']
表示先根據 uid 欄位由小到大排序,同樣大小再根據 create_time 欄位由大到小來排序,SQL語法等同 ORDER BY uid ASC, create_time DESC
$amount
若有值,例如:20,表示要分頁,且每頁20筆資料。
if ($amount) {
list($all_submission, $total, $bar) = self::get_all($where_arr, $other_arr, $view_cols, $order_arr, null, null, 'read', $amount);
$xoopsTpl->assign('bar', $bar);
$xoopsTpl->assign('total', $total);
} else {
$all_submission = self::get_all($where_arr, $other_arr, $view_cols, $order_arr);
}
$amount
分頁數,那會額外產生 $bar
(分頁工具列)及 $total
(所有資料總數) 兩個變數。 self::get_all()
來擷取所有資料並將值放入 $all_submission
$xoopsTpl->assign()
將 $all_submission
送到樣板:
$xoopsTpl->assign('all_submission', $all_submission);
Utility::test($all_submission, 'all_submission');
Utility::test('值', '關鍵字')
是一個測試工具,在網址加入測試關鍵字「test=all_submission
」,就可以觀察其取得的值: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");
BootstrapTable
來套用之
use XoopsModules\Tadtools\BootstrapTable;
BootstrapTable::render();
$fancybox = new FancyBox('.fancybox_submission_id');
$fancybox->render();
上方也別忘了加上:
use XoopsModules\Tadtools\FancyBox;
get_all()
,在while
迴圈中,將時間轉換為時間戳記,以在樣板中判斷是否過期或未開放報名
//將 uid 編號轉換成使用者姓名(或帳號)
$data['uid_name'] = Utility::get_name_by_uid($data['uid']);
$data = Tools::filter_all_data($filter, $data, self::$filter_arr);
// 加入時間戳記
$data['start_ts'] = strtotime($data['start']);
$data['end_ts'] = strtotime($data['end']);
$data['now'] = time();