1.驗證碼產生
在ThinkPhp中有個Image.class可直接使用產生驗證碼 而且可選性多
在ThinkPHP/Lib/ORG/Util/Image.class可直接查看原始碼
例如我用到的驗證碼
該方法就是產生一個驗證碼 該方法返回的是二進位的輸出資料流
public function verify()
{
import("ORG.Util.Image");//該類還有很多靜態方法 產生“品種”較多的驗證碼 這隻是其中一種
Image::buildImageVerify();
}
2.Action
在接受用戶端提交過來的資料時候 一般要進行一定得資料校正
在用到$this->error($msg);時 預設它會轉寄到Public下的success.html模版頁面,所以要預先建立此頁面 在頁面模版中可用{$error}顯示錯誤資訊
3.條件標籤
例如
<if condition="$reply.sex eq 1 "> //$reply是個對象
男
<elseif condition="$name eq 2" />人妖
<else/>女
</if>
值是跟著結束之後 個人感覺不怎麼美觀。
注:condition屬性的條件運算式都不支援 符號 如">" "<" "==" 等符號 且屬性裡面基本上使用的是php文法
官方中還讓我們推薦用Switch替換
4.Switch標籤
<switch name="reply.sex">
<case value="1">男</case>
<case value="0">女</case>
<default/>aaaa
</switch>
name可以調用系統函數和系統變數 value也可以用變數 如<case value="$sex">
5.{/* 注釋內容 */ } 或 {// 注釋內容 } 模版注釋
6.匯入檔案
<html:import type='js' file="Js.Util.Array" /> import標籤 用以匯入網站的公用JS或者CSS type可以不寫預設是JS
<html:link href="../Public/Js/Common.js" />
7.迭代標籤
如:我在項目中用到的volist標籤 迭代一個使用者列表
<volist id="reply" name="replyList">
<table style="height: 80px">
<tr>
<td>使用者:</td><td>{$reply.uname}</td>
</tr>
<tr>
<td>性別</td>
<td>
<switch name="reply.sex">
<case value="1">男</case>
<case value="0">女</case>
<default/>保密
</switch>
</td>
</tr>
<tr><td>註冊日期</td>
<td>{$reply.uregtime}</td>
</tr>
</table>
</volist>
以下例子摘之官方手冊
注意name和id表示的含義
// 輸出list的第5~15條記錄
<iterate name="list" id="vo" offset="5" length='10'>
{$vo.name}
</iterate>
// 輸出偶數記錄
<iterate name="list" id="vo" mod="2" >
<eq name="mod" value="1">
{$vo.name}
</eq>
</iterate>
// 輸出key
<iterate name="list" id="vo" key="k" >
{$k}.{$vo.name}
</iterate>
iterate還有其它的別名,包括volist,resultset,sublist
子迴圈輸出
<volist name="list" id="vo">
<sublist name="vo['sub']" id="sub">
{$sub.name}
</sublist>
</volist>
很能讓人理解的模版標籤
9.視圖查詢
就是多表串連 以自己練手的項目為例
如上reply對象 映射的是表reply 即回帖表 其引用使用者表UserInfo的UID
建立一個ViewModel子類
class ReplyViewModel extends ViewModel {
protected $viewFields=array(
'reply'=>array('content','publishTime','_as'=>'r','_type'=>'left'),
'userInfo'=>array('uname','head','sex','uregtime','_as'=>'u',
'_on'=>'r.uid=u.uid'
)
);
//viewFields 兩表串連後所需要的欄位
/**
*
*protected $viewFields = array(
'表名'=>array('所需欄位','_as'=>'別名定義','_on'=>'篩選條件',
'_type'=>'指定join類型,支援right,inner,left三種'),
);
*
*/
}
如上 直接在Action 中
$replyViewDAO=D('ReplyView'); 就可以進行操作
$replyList=$replyViewDAO->select();//獲得列表
dump($replyViewDAO->getLastSql());//看看SQL語句就明了了