:::
4-2 根據不同動作自動載入相對應樣板
一、先替各個動作準備好前端界面
- 我們目前有三個動作:
- 「
index.php」沒有op時,主內容區顯示「所有文章」界面,亦即main.tpl,這個不用處理 - 「
index.php?op=embed」主內容區顯示「產生內嵌語法」界面embed.tpl,做個空的templates/embed.tpl,內容之後再做 - 「
admin.php」沒有op時,管理頁面的主內容區顯示「發布新聞」界面create.tpl
- 「
二、根據變數自動載入
- 修改
index.php及admin.php用$smarty->assign('now_op', $op);將目前的動作送至樣板 - 順便替
index.php的switch預設值設定一個$op值為main(這樣才能載入main.tpl)<?php require 'function.php'; require 'vendor/autoload.php'; use Smarty\Smarty; $smarty = new Smarty(); // 過濾外部傳來變數 $op = filter_input_var('op'); switch ($op) { case 'embed': # code... break; default: $op = "main"; break; } $smarty->assign('now_op', $op); $smarty->display('index.tpl'); admin.php的switch預設值也設定一個$op值為create(這樣才能載入create.tpl)<?php require 'function.php'; require 'vendor/autoload.php'; use Smarty\Smarty; $smarty = new Smarty(); // 過濾外部傳來變數 $op = filter_input_var('op'); switch ($op) { default: $op = "create"; break; } $smarty->assign('now_op', $op); $smarty->display('index.tpl');- 最後最關鍵處,請修改
index.tpl及admin.tpl,主內容區可以根據$now_op的值來自動include不同的樣板檔(樣板中的變數要用``隔開)<main class="col-md-9"> {include file="`$now_op`.tpl"} </main>
4-1 傳入變數讓程式知道現在要做什麼