6-6-1
用 TadDataCenter 來註記候補
您沒有觀看影片的權限
請先登入,登入後,確認您的權限後,即可觀看影片。
- 修改資料表是件痛苦又很難避免的事情
- TadDataCenter 其實可以大大簡化這種事,例如我們想註記哪些報名者是候補,理論上,要在資料表再多個欄位來註記,但這次我們用TadDataCenter 來做(https://www.tad0616.net/modules/tad_book3/page.php?tbsn=48&tbdsn=1716)。
- 修改
class\Tad_signup_data.php
的 store()
,直接指定 tag
的值為「候補」並存入:
//新增資料
public static function store()
{
/*--略--*/
// 若是超過名額,註記為「候補」
$action = Tad_signup_actions::get($action_id, true);
$action['signup'] = Tad_signup_data::get_all($action_id);
if (count($action['signup']) >= $action['number']) {
$TadDataCenter->set_col('data_id', $id);
$TadDataCenter->saveCustomData(['tag' => ['候補']]);
}
return $id;
}
- 接著在顯示報名名單時,抓取註記即可
- 修改
class\Tad_signup_data.php
中的 get_all()
,取出 tag
的資料
//取得所有資料陣列
public static function get_all($action_id = '', $uid = '', $auto_key = false)
{
/*--略--*/
$data_arr = [];
$TadDataCenter = new TadDataCenter('tad_signup');
while ($data = $xoopsDB->fetchArray($result)) {
$TadDataCenter->set_col('id', $data['id']);
$data['tdc'] = $TadDataCenter->getData();
$data['action'] = Tad_signup_actions::get($data['action_id'], true);
$TadDataCenter->set_col('data_id', $data['id']);
$data['tag'] = $TadDataCenter->getData('tag', 0);
/*--略--*/
}
return $data_arr;
}
- 最後顯示出來即可,修改
templates\op_tad_signup_actions_show.tpl
,在日期欄位加入候補標記
<table class="table" data-toggle="table" data-pagination="true" data-search="true" data-mobile-responsive="true">
<!--略-->
<tbody>
<{foreach from=$signup item=signup_data}>
<tr>
<!--略-->
<td>
<{$signup_data.signup_date}>
<{if $signup_data.tag}>
<div><span class="badge badge-primary"><{$signup_data.tag}></span></div>
<{/if}>
</td>
</tr>
<{/foreach}>
</tbody>
</table>
link to https://github.com/tadlearn/tad_signup/commit/2c6fd30ba620c403a8a5bc8239cbc4efa11b988e \