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

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

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

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

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

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

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

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

use think\Db;

直接操作数据库

齐博x1模型里边钩子的创建与使用的更多相关文章

  1. 齐博x2模型里边钩子的创建与使用

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

  2. 齐博x1齐博首创钩子的使用方法

    齐博X1有两套钩子体系,第一套是基于TP思路设计的.跟外面的大同小异.现在重点讲一下第二套我们首创的使用方法. 首先说一下如何埋钩子,这个跟TP思路的钩子类似,就是在页面的任何地方加入如下代码即可如下 ...

  3. 最近无聊搭建一个齐博X1的下载页面

    https://layui.wanxiangsucai.com/ 用layui官方镜像站的模版 改了个齐博X1的下载页面 https://x1.wanxiangsucai.com/ 哈哈哈!!! 还有 ...

  4. 齐博x1到底是怎么的存在?

    齐博X1是齐博软件基于thinkphp5开发的内容管理系统,拓展性非常强,后台一键升级,后台提供丰富的频道模块云市插件市场.风格市场.钩子市场,所有都是一键在线安装. 系统已经对接好QQ.微信登录,同 ...

  5. 齐博X1到底是个什么鬼?

    什么是齐博/齐博CMS之X1? 齐博X1是齐博软件基于thinkphp5开发的内容管理系统,拓展性非常强,后台一键升级,后台提供丰富的频道模块云市插件市场.风格市场.钩子市场,所有都是一键在线安装. ...

  6. 齐博x1第四季《模块插件的制作》系列21-公共表单器的参数选项(7)

    password 密码类型 和text一样,只不过type类型是password,密码类型输入时,显示星号.即Html中的密码框类型 icon 字体图标类型 和列表页一样,把css的字体图标引入到了表 ...

  7. 齐博x1模块安装文件讲解

    频道模块存放的目录是/application/频道目录/ 插件存放的目录是/plugins/插件目录/ 他的安装目录都是/install/ 推荐参考默认的/application/cms/instal ...

  8. 齐博x1服务器性能太差,调整系统升级每次校验的文件数

    系统升级需要校验本地的文件是否被修改过,系统默认每次检验1千个文件,一般来说需要分四到五页来处理,如下图所示. 如果你的服务器性能太差的话,就需要手工把数值调小.把下面的代码复制出来.进入后台数据库管 ...

  9. 齐博软件 著名的老牌CMS开源系统 X1.0基于thinkphp开发的高性能免费开源PHP开放平台齐博x1.0基于thinkphp框架开发的高性能免费开源系统 主推圈子 论坛 预定拼团分销商城模块

    齐博X1--标签变量大全 1.网站名称: {$webdb.webname} 2.网址: {$webdb[www_url]} {:get_url('home')} 3.网站SEO关键词: 首页:{$we ...

随机推荐

  1. 就在明天,Apache DolphinScheduler Meetup 2021 如约而至!

    点击上方 蓝字关注我们 社区的小伙伴们,Apache DolphinScheduler Meetup 2021 如约而至,就在明天,等你来玩! 在此次 Meetup 线上直播中,不仅将有来自 Bigo ...

  2. 开源风吹动开源心 ~ 8月16日,你若来,我们(Apache)在等你!

    点击上方蓝字关注ALC Beijing 抢! 太好看了吧! 买它,就是它,买它! 要抢! ALC是Apache Local Community的缩写,是全世界范围的 Apache 开源爱好者本地群组. ...

  3. 构建数据湖上低延迟数据 Pipeline 的实践

    T 摘要 · 云原生与数据湖是当今大数据领域最热的 2 个话题,本文着重从为什么传统数仓 无法满足业务需求? 为何需要建设数据湖?数据湖整体技术架构.Apache Hudi 存储模式与视图.如何解决冷 ...

  4. which 和 that 在定语从句中作介词宾语的用法

    关系代词在定语从句中作介词的宾语,且介词在关系代词之前时,关系代词应该用 which:介词在定语从句句末,关系代词可以用 that 或 which. (一)He teaches in a school ...

  5. Html飞机大战(八):子弹的移动和管理

    好家伙,这应该是这个小游戏最难的几个点之一了 现在我们要做出子弹射击的效果我们应该如何处理? 1.首先我们要确定几个变量和方法的关系 变量: 子弹  bullet  弹夹(用来装子弹的东西)bulle ...

  6. C++工厂方法模式讲解和代码示例

    在C++中使用模式 使用示例: 工厂方法模式在 C++ 代码中得到了广泛使用. 当你需要在代码中提供高层次的灵活性时, 该模式会非常实用. 识别方法: 工厂方法可通过构建方法来识别, 它会创建具体类的 ...

  7. js函数( 普通函数、箭头函数 ) 内部this的指向

    - 普通函数   | 具名普通函数.匿名普通函数,在不作为对象的属性值的情况下,其内部的 this 总是指向代码运行环境下的全局对象 ( 例如,浏览器中的 window ). 示例: (functio ...

  8. RTMP播放器开发填坑之道

    好多开发者提到,在目前开源播放器如此泛滥的情况下,为什么还需要做自研框架的RTMP播放器,自研和开源播放器,到底好在哪些方面?以下大概聊聊我们的一点经验,感兴趣的,可以关注 github: 1. 低延 ...

  9. Mac根据端口找进程id

    lsof -i:20942 以后认真的学习一下这个命令

  10. 读完 RocketMQ 源码,我学会了如何优雅的创建线程

    RocketMQ 是一款开源的分布式消息系统,基于高可用分布式集群技术,提供低延时.高可靠的消息发布与订阅服务. 这篇文章,笔者整理了 RocketMQ 源码中创建线程的几点技巧,希望大家读完之后,能 ...