當我們做動態頁面時,我們會發現一個網站的頭部和尾部是相同的,那么我們如何用tp框架來做模板呢 ?
先看一下注意事項:
(1)每個區塊由<block></block>
標簽組成
(2)子模板中使用extend標簽繼承模板
(3)注釋語法:{/* 注釋內容 */ } 或 {// 注釋內容 }
一、看一下基本的模板繼承
(1)先做出模板頁面 Ceshi/View/Main/base.html
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <!--放標題--> <title><block name="bt">標題</block></title> <style> *{padding: 0px;margin: 0px;} #head{width: 100%;height: 100px;background-color: azure;} #foot{width: 100%;height: 100px;background-color: gray;} </style> <!--用於放js、css樣式--> <block name="tou"></block> </head> <body> <div id="head"> <h1>這是頭部</h1> <!--從數據庫讀取數據--> <foreach name="arr" item="vo" > <span>{$vo.name}</span> </foreach> </div> <!--這是需要依據頁面變化的內容--> <block name="nr"></block> <div id="foot"> <h1>這是尾部</h1> </div> </body> </html>
(2)做操作方法Ceshi/Controller/MainController.class.php
<?php namespace Ceshi\Controller; use Think\Controller; class MainController extends Controller { //模板的繼承 public function test(){ //這樣可以調用模板中連接數據庫部分 $this->base(); $this->show(); }
//當模板頁面鏈接數據庫時 public function base(){ $m=M("users"); $arr = $m->select(); $this->assign("arr",$arr); } }
(3)做子頁面 Ceshi/View/Main/test.html
<!--調用模板--> <extend name="base" /> <block name="bt">子頁面</block> <block name="tou"> <style type="text/css"> #nr{width: 100%;height: 400px;background-color: yellow; } </style> </block> <block name="nr"> <div id="nr"> <h1>我是中間內容</h1> </div> </block>
效果圖(樣式有點簡單)
注意事項:當模板頁面有鏈接數據庫的數據時怎樣做
(二)舉例:刪除和修改
(1)先做顯示頁面 Ceshi/View/Main/mains.html
<extend name="base" /> <block name="bt">shanchu</block> <block name="tou"> <style type="text/css"> /*#nr{width: 100%;height: 400px;background-color: yellow; }*/ #aa{height: 400px;width: 100%;background-color: yellow;} </style> </block> <block name="nr"> <div id="aa"> <table width="100%" border="1" cellpadding="0" cellspacing="0"> <tr> <td>代號</td> <td>書名</td> <td>單價</td> <td>庫存</td> <td>時間</td> <td>操作</td> </tr> <!--name表示數組名稱 item表示遍歷出來的每一個小數組--> <foreach name="attr" item="v" > <tr> <td>{$v.bkid}</td> <td>{$v.bkname}</td> <td>{$v.bkprice}</td> <td>{$v.bkstock}</td> <td>{$v.time}</td> <!--用get方式傳值--> <td><a href="__CONTROLLER__/del/bkid/{$v.bkid}">刪除</a> <a href="__CONTROLLER__/update/bkid/{$v.bkid}">修改</a></td> </tr> </foreach> </table> </div> </block>
(2)做操作方法Ceshi/Controller/MainController.class.php
<?php namespace Ceshi\Controller; use Think\Controller; class MainController extends Controller { public function mains(){ $m = M("book"); $arr = $m->select(); $this->assign("attr",$arr); $this->show(); } public function del($bkid){ //$bkid 以形參的方式傳值 $m = M("book"); $url = U("mains"); if($m->delete($bkid)){ //第二個參數,表示返回的路徑;第三個參數:表示停留時間 $this->success("刪除成功",$url); } else{ //不寫第二個參數,默認返回上一個頁面 $this->error("刪除失敗"); } } public function update(){ $m = M("book"); //get方式取到值 $bkid = $_GET["bkid"]; $attr = $m->find($bkid); //注冊變量 $this->assign("attr",$attr); if(empty($_POST)){ $this->show(); }else{ //自動獲取表單數據 $m->create(); $m->save(); } } }
(3)修改頁面 Ceshi/View/Main/update.html
<extend name="base" /> <block name="bt">修改</block> <block name="tou"> <style type="text/css"> #nr{width: 100%;height: 400px;background-color: yellow;} </style> </block> <block name="nr"> <form method="post" action="__ACTION__"> <input type="hidden" name="bkid" value="{$attr.bkid}" /><br /> 書名:<input type="text" name="bkname" value="{$attr.bkname}" /><br /> 單價:<input type="text" name="bkprice" value="{$attr.bkprice}"/><br /> 庫存:<input type="text" name="bkstock" value="{$attr.bkstock}"/><br /> <input type="submit" value="修改"/> </form> </block>
看一下效果:
點擊刪除bkid=33;
原頁面bkid=33已經被刪除
點擊修改bkid=22;
點擊修改提交數據,重新刷新頁面,會發現單價和粗存已經被修改了
這樣,tp框架的刪除和修改就完成了,至於用ajax方式還是tp框架方式寫,哪個更方便就用哪個唄~~~