栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > PHP > php开源框架 > 齐博CMS

模型里边钩子的创建与使用 - 齐博CMS之X1

齐博CMS 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

模型里边钩子的创建与使用 - 齐博CMS之X1

在模型里边的钩子创建与使用方法跟在控制器里边的钩子创建及使用方法是有所区别的
在模型里边创建的钩子,你可以理解为执行一个函数,是无法调用模型里边的类的方法及属性的。
比如系统文件`applicationcommonmodelOrder.php`
里边的这段代码如下

protected static function success_pay($order_info=[]){r
//客户扣款r
add_rmb($order_info['uid'],-abs($order_info['pay_money']),0,'购物消费');r
r
//商家入帐r
add_rmb($order_info['shop_uid'],abs($order_info['pay_money']),0,'销售商品');r
r
static::send_msg($order_info);r
r
get_hook('order_have_pay',$data=[],$order_info,$array=['dirname'=>self::$model_key],$use_common=true,self::$model_key); //钩子扩展r
}

这个方法是用户 支付订单款后执行的操作。里边埋了一个钩子。
其中`get_hook`就是钩子函数,所以他是不能使用类里边的方法与属性的。

这里有一个很特殊的地方,就是增加了第6项参数,指定了当前的频道目录名 `$dirname`目的是为了避免此模型被其它地方频道或模型调用的时候,无法真实的获取到当前所在频道目录的问题。
同时也给第4项参数 `,$array=['dirname'=>self::$model_key]` 特别传递了目录名,方便后面的调用。

上述就是预埋钩子的注意事项。
下面再给出一段代码,讲解如何使用模型钩子。
你可以创建文件

`applicationshopextorder_have_paygive_jifen.php`
其中 `order_have_pay`就是钩子标志,`give_jifen.php` 功能文件名可以随意的。
其中文件是放在`applicationshopext`这个目录里,代表只能是商城目录调用。如果要其它频道也可以调用的话,就需要换成 `applicationcommonext`系统目录
文件里边的具体代码如下

$uid = $info['uid']; //$info 是订单信息r
$webdb = config('webdb.M__'.$array['dirname']); //频道参数r
$num = isset($webdb['give_jifen'])?$webdb['give_jifen']:2; //频道设置了赠与积分,就能频道的为标准r
if ($num>0) {r
add_jifen($uid,2,'购买商品赠送积分');r
}

其中 `$info`及 `$array`两个变量都是通过函数传进来的。
这里要操作数据库的话,只能用引用

use thinkDb;

直接操作数据库

,
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/214222.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号