Toggle main menu visibility
下載輕鬆架
套件下載
使用手冊
發問討論
網站地圖
:::
登入
登入
帳號
密碼
登入
:::
所有書籍
「XOOPS快速模組開發」目錄
MarkDown
4-1 調整建立投稿主題的表單界面
1. 模組產生器的使用概念
1-1 安裝XOOPS環境
1-2 安裝模組產生器
1-3 安裝 VSCode 開發工具
2. 投稿模組實做
2-1 第 1 步 基本設定
2-2 第 2 步 資料表設定
2-3 第 3 步 後台設定
2-4 第 4 步 前台設定
2-5 第 5 步 區塊設定
2-6 第 6 步 圖示設定
2-7 第 7 步 圖示預覽
2-8 第 8 步 設定欄位
2-9 第 9 步 產生模組
2-10 安裝模組
3. 用VSCode來編輯模組並認識模組結構
3-1 整理 xoops_version.php
3-2 修改 interface.php
3-3 用 Tools::get_session() 來記住登入者身份
3-4 讓 setup.php 只有有權限者才能進入
3-5 用 $op 來自動載入對應的子樣板檔
3-6 系統的七個主要動作
4. create 表單界面
4-1 調整建立投稿主題的表單界面
4-2 create() 建立表單的物件方法
5. store 新增儲存
5-1 store() 儲存資料的物件方法
6. show 顯示一筆資料
6-1 調整顯示單一投稿主題的界面
6-2 show() 顯示某筆資料的物件方法
7. edit 修改功能
8. update 更新資料
8-1 update() 更新資料的物件方法
9. index 顯示所有資料
9-1 調整顯示所有投稿主題的界面
9-2 index() 顯示所有資料的物件方法
10. 開始修改「線上投稿」畫面
10-1 修改學生看到的所有投稿主題畫面
10-2 投稿的 create 表單界面及物件
10-3 儲存學生投稿稿件
10-4 列出某主題下的所有文章
10-5 顯示學生的投稿文章
10-6 讓老師可以審核學生文章
10-7 讓學生可以修改投稿文章
11. 偏好設定、區塊、搜尋等功能
11-1 偏好設定新增「可審核」的群組設定
11-2 建立搜尋工具
11-3 建立區塊
12. XOOPS的各種內建物件
12-1 關於 Xmf\Request 變數過濾物件
12-2 $xoopsUser 使用者物件
12-3 關於 $xoopsDB 資料庫物件
12-4 關於 $xoopsTpl 樣板物件
12-5 關於各種XOOPS會用到超級全域變數,如 $GLOBALS['xoops']
5. store 新增儲存
XOOPS快速模組開發 =========== 1. 上單元的表單界面,除了用樣板來控制視覺上的界面外,還需要用來產生界面的一些預設值及額外功能,則需用到物件方法是: `create()`,其預設內容如下: ```php /** * submission 編輯表單 * * @param int $id 流水號 * * @return void */ public static function create($id = '') { global $xoopsTpl, $xoopsUser; Tools::chk_is_adm('', '', __FILE__, __LINE__); //抓取預設值 $submission = (!empty($id)) ? self::get(['id' => $id]) : []; //預設值設定 $def['id'] = $id; $def['start'] = date("Y-m-d H:i"); $def['end'] = date("Y-m-d H:i"); $user_uid = $xoopsUser ? $xoopsUser->uid() : ""; $def['uid'] = $user_uid; $def['create_time'] = date("Y-m-d H:i:s"); if (empty($submission)) { $submission = $def; } foreach ($submission as $key => $value) { $value = Tools::filter($key, $value, 'edit', self::$filter_arr); $$key = isset($submission[$key]) ? $submission[$key] : $def[$key]; $xoopsTpl->assign($key, $value); } $op = (!empty($id)) ? "submission_update" : "submission_store"; $xoopsTpl->assign('next_op', $op); //套用formValidator驗證機制 $formValidator = new FormValidator("#myForm", true); $formValidator->render(); //投稿說明 $ck = new CkEditor("submission", "content", $content); $ck->setHeight(200); $ck->setVar('placeholder', ''); $editor = $ck->render(); $xoopsTpl->assign('content_editor', $editor); My97DatePicker::render(); My97DatePicker::render(); //上傳表單 $TadUpFiles = new TadUpFiles("submission"); if ($id) { $TadUpFiles->set_col("submission_id",$id); //$TadUpFiles->set_dir('subdir', "/{$id}"); } //$TadUpFiles->set_var("require", true); //必填 //$TadUpFiles->set_var("show_tip", false); //不顯示提示 $submission_files_create = $TadUpFiles->upform(true, "submission_files", ""); $xoopsTpl->assign('submission_files_create', $submission_files_create); //加入Token安全機制 Utility::token_form(); } ``` 2. `Tools::chk_is_adm('', '', __FILE__, __LINE__);` 用來檢查身份,預設為管理員,也就是只有管理原有權限,沒權限會被踢出。 3. 若是有傳入` $id`,則會根據之抓取預設值,若沒有,也可以視需求手動設定預設值,例如我們希望截止日期 `$def['end']` 預設是一個星期後,那麼可以這麼寫: ```php //抓取預設值 $submission = (!empty($id)) ? self::get(['id' => $id]) : []; //預設值設定 $def['id'] = $id; $def['start'] = date("Y-m-d 08:00"); $def['end'] = date("Y-m-d 17:00", strtotime('+7 days')); $user_uid = $xoopsUser ? $xoopsUser->uid() : ""; $def['uid'] = $user_uid; $def['create_time'] = date("Y-m-d H:i:s"); $def['info']['award'] = '入選;優選;特選'; if (empty($submission)) { $submission = $def; } ``` 4. 接著是將預設值或之前寫入的原值進行過濾,並且用 `$xoopsTpl->assign()` 將之一一送到樣板: ```php foreach ($submission as $key => $value) { $value = Tools::filter($key, $value, 'edit', self::$filter_arr); $$key = isset($submission[$key]) ? $submission[$key] : $def[$key]; $xoopsTpl->assign($key, $value); } ``` 5. 若是有傳入 `$id`,表示是更新,因此,將 `$op` 設為 `submission_update `反之則是新增寫入,其值為 `submission_store`,一樣送至樣板,並命名為 `$next_op` ```php $op = (!empty($id)) ? "submission_update" : "submission_store"; $xoopsTpl->assign('next_op', $op); ``` 6. 上述是表單的基本會用到的所有東西,幾乎都是固定的流程,唯一要改的可能只有預設值部份 7. 接下來的部份算是錦上添花,首先是表單驗證機制,上方需有 ```php use XoopsModules\Tadtools\FormValidator; ``` 就是使用 `XoopsModules\Tadtools` 命名空間底下的 `FormValidator `類別,接下來只要寫 `FormValidator `就可以用了,不用每次都寫那一長串全名。[FormValidator 詳細用法可以看這裡
](https://github.com/tad0616/tadtools/blob/master/class/FormValidator.php) ```php //套用formValidator驗證機制 $formValidator = new FormValidator("#myForm", true); $formValidator->render(); ``` 8. 投稿說可以使用所見即所得編輯器,所以上方先加入: ```php use XoopsModules\Tadtools\CkEditor; ``` 初始化需填入模組名稱、欄位名稱,調整一下高度以及佔位符即可。[CkEditor 詳細用法可以看這裡
](https://tad0616.net/modules/tad_book3/page.php?tbsn=15&tbdsn=363) ```php $ck = new CkEditor("submission", "content", $content); $ck->setHeight(200); $ck->setVar('placeholder', '請填入投稿說明'); $ck->setToolbarSet('tadSimple'); $editor = $ck->render(); $xoopsTpl->assign('content_editor', $editor); ``` 9. 投稿起訖日期可用小月曆挑選器,上方先加入: ```php use XoopsModules\Tadtools\My97DatePicker; ``` 就一行即可,不用任何參數。[My97DatePicker 詳細用法可以看這裡
](https://github.com/tad0616/tadtools/blob/master/class/My97DatePicker.php) ```php My97DatePicker::render(); ``` 10. TadUpFiles上傳元件,上方先加入: ```php use XoopsModules\Tadtools\TadUpFiles; ``` ` set_col()`比較重要,用來設定這個上傳檔案應該屬於哪一筆資料,其餘的視情況使用,例如。[TadUpFiles 詳細用法可以看這裡
](https://github.com/tad0616/tadtools/blob/master/class/TadUpFiles.php) ```php $TadUpFiles = new TadUpFiles("submission"); if ($id) { $TadUpFiles->set_col("submission_id",$id); $TadUpFiles->set_dir('subdir', "/{$id}"); } //$TadUpFiles->set_var("require", true); //必填 //$TadUpFiles->set_var("show_tip", false); //不顯示提示 $submission_files_create = $TadUpFiles->upform(true, "submission_files", ""); $xoopsTpl->assign('submission_files_create', $submission_files_create); ``` 11. 其中`set_dir()`也蠻常用,其值要有 / 開頭,例如` $TadUpFiles->set_dir('subdir', "/$id")`,可以設定檔案是否放入到子目錄中。若是要改,記得其他地方也都一併修改(`store`、`update`、`create`) 12. 產生表單用token,就一行,放上即可。 ```php //加入Token安全機制 Utility::token_form(); ```
:::
書籍目錄
展開
|
闔起
快速登入
所有討論區
Tad Booking 場地設備預約
Tad Search 資料查詢
懶人框架討論區
實戰PHP7+MySQL
XOOPS輕鬆架快速上手
校園網站輕鬆架一般討論區
Booking Helper 預約助手
es_stud_sign 班級報名
es charge 學生收費管理
E-Stud import 學生名冊管理
es_after_school 課後照顧報名
es_exam 學生作業繳交
ES_panel 校務行政面板
es_timetable 課表
ES_youtube 本校影音
info_whats 網路設備記錄
jill booking 場地預約
jill_notice 臨時公告
jill query 簡易查詢
jill receipt 領據填報
kw club 社團報名
kw device 設備借用管理系統
ntpc_oprnid 新北市 OpenID 登入
TinyD嵌入內容模組
ugm contact us 聯絡我們
ugm page 自訂頁面
ugm table 萬用表格
dummy 自訂模組
soone_submit 投稿模組
Tad Adm 站長工具箱
Tad Assignment 作業上傳展示模組
Tad Blocks 進階區塊管理
Tad Book3 線上書籍
Tad Cal 行事曆
Tad Cbox 即時留言簿
Tad Discuss 討論區模組
Tad Embed 崁入模組
Tad Evaluation 評鑑檔案管理
Tad Form 萬用表單模組
Tad FAQ 常見問答
Tad Google 相簿
Tad Gallery 電子相簿
Tad Guide 安裝精靈
Tad Honor 榮譽榜
Tad idioms 背背成語
Tad Link 好站連結
Tad Login 快速登入
Tad Lunch3 午餐資訊
Tad Lunch2 營養午餐公告
Tad Meeting 會議系統
Tad Merage 線上合併套印
Tad News 本站消息
Tad Player 影音播放
Tad RSS 友站新聞
Tad Repair 維修通報
Tad SiteMap網站地圖
Tad Timeline 重要紀事
Tad Themes 佈景管理
Tad Tools 工具包
Tad TV 直播電視
Tad Uploader 檔案上傳模組
Tad Users 大量會員管理
Tad Web 多人網頁模組
MyTabs 我的頁籤
Random Quote 隨機小語
LogCounterX 網站流量統計
Yaoh light 多區塊多層次跑馬燈模組
校園網站輕鬆架功能建議區
佈景討論區
即時留言簿
search
進階搜尋
計數器
今天:
昨天:
總計: