齊博x1模型里邊鉤子的創(chuàng)建與使用
在模型里邊的鉤子創(chuàng)建與使用方法跟在控制器里邊的鉤子創(chuàng)建及使用方法是有所區(qū)別的
在模型里邊創(chuàng)建的鉤子,你可以理解為執(zhí)行一個(gè)函數(shù),是無(wú)法調(diào)用模型里邊的類的方法及屬性的。
比如系統(tǒng)文件\application\common\model\Order.php
里邊的這段代碼如下
這個(gè)方法是用戶 支付訂單款后執(zhí)行的操作。里邊埋了一個(gè)鉤子。
其中get_hook
就是鉤子函數(shù),所以他是不能使用類里邊的方法與屬性的。
這里有一個(gè)很特殊的地方,就是增加了第6項(xiàng)參數(shù),指定了當(dāng)前的頻道目錄名?$dirname
目的是為了避免此模型被其它地方頻道或模型調(diào)用的時(shí)候,無(wú)法真實(shí)的獲取到當(dāng)前所在頻道目錄的問題。
同時(shí)也給第4項(xiàng)參數(shù)?,$array=['dirname'=>self::$model_key]
?特別傳遞了目錄名,方便后面的調(diào)用。
上述就是預(yù)埋鉤子的注意事項(xiàng)。
下面再給出一段代碼,講解如何使用模型鉤子。
你可以創(chuàng)建文件
\application\shop\ext\order_have_pay\give_jifen.php
其中?order_have_pay
就是鉤子標(biāo)志,give_jifen.php
?功能文件名可以隨意的。
其中文件是放在\application\shop\ext\
這個(gè)目錄里,代表只能是商城目錄調(diào)用。如果要其它頻道也可以調(diào)用的話,就需要換成?\application\common\ext\
系統(tǒng)目錄
文件里邊的具體代碼如下
<?php
$uid = $info['uid'];? ? //$info 是訂單信息
$webdb = config('webdb.M__'.$array['dirname']); //頻道參數(shù)
$num = isset($webdb['give_jifen'])?$webdb['give_jifen']:2;? //頻道設(shè)置了贈(zèng)與積分,就能頻道的為標(biāo)準(zhǔn)
if ($num>0) {
? ? add_jifen($uid,2,'購(gòu)買商品贈(zèng)送積分');
}
其中?$info
及?$array
兩個(gè)變量都是通過函數(shù)傳進(jìn)來(lái)的。
這里要操作數(shù)據(jù)庫(kù)的話,只能用引用
use think\Db;
直接操作數(shù)據(jù)庫(kù)