:::
主內容區域
3-5 用 $op 來自動載入對應的子樣板檔
- 上個單元說了,
index(列出)、show(顯示)、create(表單) 需要有界面,因此,會有對應子樣板(名稱規則為op_資料表_動作.tpl依此類推)。 setup.php使用了submission_setup.tpl主樣板$GLOBALS['xoopsOption']['template_main'] = 'submission_setup.tpl';submission_setup.tpl主樣板位於templates/下,位置不可更改,其內容為:<{$toolbar|default:''}> <{if $now_op|default:false}> <{include file="$xoops_rootpath/modules/$xoops_dirname/templates/op_`$now_op`.tpl"}> <{/if}> <script language="JavaScript" type="text/javascript"> $(document).ready(function(){ $('[data-toggle="tooltip"]').tooltip(); $('[data-bs-toggle="tooltip"]').tooltip(); }); </script><{$toolbar|default:''}>就是工具列,不需要可以刪除。其值由setup.php的頁尾部份送過來的$xoopsTpl->assign('toolbar', Utility::toolbar_bootstrap($interface_menu, false, $interface_icon));樣板標籤後的
|default:''是用來給預設值,避免沒有送$toolbar變數過來時,會顯示錯誤。$now_op也是由setup.php的頁尾部份送過來的,用來自動載入子樣板。$xoopsTpl->assign('now_op', $op);<{if $now_op|default:false}> <{include file="$xoops_rootpath/modules/$xoops_dirname/templates/op_`$now_op`.tpl"}> <{/if}>- 例如流程會根據
$op的值來執行動作,萬一沒有$op值,就執行default:,因此,我們必須自行定義$op的值,以便後續自動載入子樣板。//預設動作 default: if (empty($id)) { $where_arr = []; Submission::index($where_arr, [], [], 20); $op = 'submission_index'; } else { $where_arr['id'] = $id; Submission::show($where_arr); $op = 'submission_show'; } break;- 例如沒有
$id時,就是用index()列出全部,因此,我們就自己設定一個$op = 'submission_index';後續便會自動載入op_submission_index.tpl這個子樣板檔 - 有
$id時,就是用show()來觀看某一筆資料,因此,我們就自己設定一個$op = 'submission_show';後續便會自動載入op_submission_show.tpl這個子樣板檔
- 例如沒有
- 最後一部份非必須,只是為了支援 BootStrap4 或BootStrap5 的tooltip提示功能,放著即可。用到刪除亦無妨。
<script language="JavaScript" type="text/javascript"> $(document).ready(function(){ $('[data-toggle="tooltip"]').tooltip(); $('[data-bs-toggle="tooltip"]').tooltip(); }); </script>
3-4 讓 setup.php 只有有權限者才能進入