ThinkPHP中的BUG及技巧與策:

1. 模板中不能使用的標籤

{$content} {$i}

2. If標籤

如: <if condition="$name eq 1 ">

試驗後總是有想不到的錯誤, 這樣,還不如直接用<?php if(...){ ...?>來得快些呢.



約定:

1.所有類庫文件必須使用.class.php作爲文件後綴,並且類名和文件名保持一致

2.控制器的類名以Action爲後綴 IndexAction 繼承Action

3.模型的類名以Model爲後綴,類名第一個字母須大寫 UserModel.class.php 繼承 Model flower_user

4.數據庫表名全部採用小寫,



如:

數據表名: 前綴_表名

模型類名: 表名Model 注:飫鐗謀礱諞桓鱟幟敢笮?br> 創建對象: D('表名') 注:這裏的表名第一個字母要大寫


定義控制器類

class IndexAction extends Action{

public function show(){

echo '這是新的 show 操作';

}

}

然後在瀏覽器裏面輸入

http://localhost/myApp/index.php/Index/show/



定義模型類:

class 表名Model extends Model{

[//手動定義字段[可選]

protected $fields = array(

'id',

'username',

'email',

'age',

'_pk'=>'id', //主鍵

'_autoInc'=>true //是否自增

)

]

}


記錄的修改:

$User = D("User") // 實例化 User 對象

$User->find(1) // 查找 id 爲 1 的記錄

$User->name = 'ThinkPHP' // 把查找到的記錄的名稱字段修改爲 ThinkPHP

$User->save() // 保存修改的數據

更新特定字段的值

$User->setField('name','TopThink',')

同樣可以支持對字段的操作

$User->setField('score','(score+1)',')



新建記錄,方法1:

$User = new UserModel() //實例化 User 對象

$User->字段名 = 字段值 //給字段賦值

$User->add() //添加記錄

新建記錄,方法2:

$data['字段名'] = 字段值; //給字段賦值

$User = D('User'); //實例化 User 對象

$User->add($data); //$insertId,Add 方法的返回值就是最新插入的主鍵值,可以直接獲取。

新增多條記錄:

$User = new UserModel()

$data[0]['name'] = 'ThinkPHP'

$data[0]['email'] = '[email protected]'

$data[1]['name'] = '流年'

$data[1]['email'] = '[email protected]'

$User>addAll($data)



刪除記錄

$User->find(2)

$User->delete() // 刪除查找到的記錄

$User->delete('5,6') // 刪除主鍵爲 5、6 的數據

$User->deleteAll() // 刪除查詢出來的所有數據



記錄查詢


$User->getDbFields() //獲取當前數據字段

$User->findAll(); //查找所有記錄

$User->findAll('1,3,8') //查詢主鍵爲1,3,8的記錄集

$User->count() // 獲取記錄數

$User->max('score') // 獲取用戶的最大積分

$User->min('score','score>0') // 獲取積分大於 0 的用戶的最小積分

$User->avg('字段名') // 獲取所有記錄的字段值的平均值

$User->sum('字段名') // 統計字段值

$User->getN(2,'score>80','score desc') // 返回符合條件的第 2 條記錄

$User->getN(2,'score>80','score desc') //還可以獲取最後第二條記錄

$User->first('score>80','score desc') //如果要查詢第一條記錄,還可以使用

$User->last('score>80','score desc') // 獲取最後一條記錄

$User->top(5,'','score desc') // 獲取積分最高的前 5 條記錄

$User->getBy('name','liu21st') //跟據字段的字段值來查詢記錄


$Model = new Model() // 實例化一個 model 對象 沒有對應任何數據表

$Model->query("select * from think_user where status=1")


$objrs = $Model->query("select * from think_user where status=1") //自定義查詢

$Model->execute("update think_user set where status=1") //用於更新和寫入數據的 sql 操作,返回影響的記錄數



$User->startTrans() // 啓動事務

$User->commit() // 提交事務

$User->rollback() // 事務回滾








模板:


$this->assign('name',$value); //在 Action 類裏面使用 assign 方法對模板變量賦值,無論何種變量類型都統一使用 assign 賦值


$this->display() // 輸出模版文件


批量賦值

$array['name'] = 'thinkphp'

$array['email'] = '[email protected]'

$array['phone'] = '12335678'

$this->assign($array)



$this->display() // 調用 User 模塊的 read 操作模版

$this->display('edit') // 調用 User 模塊的 edit 操作模版

$this->display('Member:read') // 調用 Member 模塊的 read 操作模版

$this->display('Xp@User:edit') // 調用 Xp 主題的 User 模塊的 edit 操作模版

$this->display('../Member/read.html') // 直接指定模版文件的全名



模板標籤:


{ } 或 {// 註釋內容 } //模板註釋

{$user['name']} //輸出數組變量

{$user:name} //輸出對象的屬性


爲了方便模板定義,無論輸出的模板變量是數組還是對象,都可以用下列統一方式輸出:

{$user.name}

如果是多維數組或者多層對象屬性的輸出,請使用下面的定義方式:

{$user['sub']['name']}

{$user:sub:name}


使用函數:

格式:{$varname|function1|function2=arg1,arg2,### }

說明:

{ 和 $ 符號之間不能有空格 ,後面參數的空格就沒有問題

###表示模板變量本身的參數位置


系統變量

{$Think.server.script_name } //取得$_SERVER 變量

{$Think.session.session_id|md5 } // 獲取$_SESSION 變量

{$Think.get.pageNumber } //獲取$_GET 變量

{$Think.cookie.name } //獲取$_COOKIE 變量

系統常量

{$Think.const.__FILE__ }

{$Think.const.MODULE_NAME }

特殊變量 ,由 ThinkPHP 系統定義的常量

{$Think.version } //版本

{$Think.now } //現在時間



快捷輸出

{:function(…)} //執行方法並輸出返回值

{~function} //執行方法不輸出

{@var} //輸出 Session 變量

{&var} //輸出配置參數

{%var} //輸出語言


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章