齐博x1模型里边钩子的创建与使用
在模型里边的钩子创建与使用方法跟在控制器里边的钩子创建及使用方法是有所区别的
在模型里边创建的钩子,你可以理解为执行一个函数,是无法调用模型里边的类的方法及属性的。
比如系统文件\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模型里边钩子的创建与使用的更多相关文章
- 齐博x2模型里边钩子的创建与使用
在模型里边的钩子创建与使用方法跟在控制器里边的钩子创建及使用方法是有所区别的在模型里边创建的钩子,你可以理解为执行一个函数,是无法调用模型里边的类的方法及属性的.比如系统文件\application\ ...
- 齐博x1齐博首创钩子的使用方法
齐博X1有两套钩子体系,第一套是基于TP思路设计的.跟外面的大同小异.现在重点讲一下第二套我们首创的使用方法. 首先说一下如何埋钩子,这个跟TP思路的钩子类似,就是在页面的任何地方加入如下代码即可如下 ...
- 最近无聊搭建一个齐博X1的下载页面
https://layui.wanxiangsucai.com/ 用layui官方镜像站的模版 改了个齐博X1的下载页面 https://x1.wanxiangsucai.com/ 哈哈哈!!! 还有 ...
- 齐博x1到底是怎么的存在?
齐博X1是齐博软件基于thinkphp5开发的内容管理系统,拓展性非常强,后台一键升级,后台提供丰富的频道模块云市插件市场.风格市场.钩子市场,所有都是一键在线安装. 系统已经对接好QQ.微信登录,同 ...
- 齐博X1到底是个什么鬼?
什么是齐博/齐博CMS之X1? 齐博X1是齐博软件基于thinkphp5开发的内容管理系统,拓展性非常强,后台一键升级,后台提供丰富的频道模块云市插件市场.风格市场.钩子市场,所有都是一键在线安装. ...
- 齐博x1第四季《模块插件的制作》系列21-公共表单器的参数选项(7)
password 密码类型 和text一样,只不过type类型是password,密码类型输入时,显示星号.即Html中的密码框类型 icon 字体图标类型 和列表页一样,把css的字体图标引入到了表 ...
- 齐博x1模块安装文件讲解
频道模块存放的目录是/application/频道目录/ 插件存放的目录是/plugins/插件目录/ 他的安装目录都是/install/ 推荐参考默认的/application/cms/instal ...
- 齐博x1服务器性能太差,调整系统升级每次校验的文件数
系统升级需要校验本地的文件是否被修改过,系统默认每次检验1千个文件,一般来说需要分四到五页来处理,如下图所示. 如果你的服务器性能太差的话,就需要手工把数值调小.把下面的代码复制出来.进入后台数据库管 ...
- 齐博软件 著名的老牌CMS开源系统 X1.0基于thinkphp开发的高性能免费开源PHP开放平台齐博x1.0基于thinkphp框架开发的高性能免费开源系统 主推圈子 论坛 预定拼团分销商城模块
齐博X1--标签变量大全 1.网站名称: {$webdb.webname} 2.网址: {$webdb[www_url]} {:get_url('home')} 3.网站SEO关键词: 首页:{$we ...
随机推荐
- 臭名远扬之 goto 语句
C 语言自学之 goto 语句 Dome1:以下程序实现从控制台输出1-10,使用goto语句,实现当输出完3之后跳出循环体. 1 #include <stdio.h> 2 3 int m ...
- Luogu2543[AHOI2004]奇怪的字符串 (动态规划 LCS)
04年的省选这么water吗,开个滚动数组算了 #include <iostream> #include <cstdio> #include <cstring> # ...
- Python爬虫之xpath语法及案例使用
Python爬虫之xpath语法及案例使用 ---- 钢铁侠的知识库 2022.08.15 我们在写Python爬虫时,经常需要对网页提取信息,如果用传统正则表达去写会增加很多工作量,此时需要一种对数 ...
- Word 分栏符怎么使用
如果你使用栏来设置文档格式(如在某些新闻稿布局中),则文本将自动从一栏排列到另一栏.可以插入你自己的分栏符,以更好地控制文档格式. 单击"布局"选项卡--"页面设置&qu ...
- 简单理解 Flutter 中 StatelessWidget 和 StatefulWidget
Widget 分为了两种类型,分别为 StatelessWidget 和 StatefulWidget. 顾名思义,StatelessWidget 就是无状态的组件,它只是作为一个不发生任何更新状态的 ...
- Python小游戏——外星人入侵(保姆级教程)第一章 07调整飞船速度 08限制飞船活动范围
系列文章目录 第一章:武装飞船 07调整飞船速度 08限制飞船活动范围 一.代码及演示 1.修改settings 修改文件:settings.py 点击查看代码 #渗透小红帽python的学习之路 # ...
- C语言重定向输入:txt文件内容是中文,重定向输入显示乱码的原因
一.txt文件中的内容是中文,重定向输入显示乱码原因: 是因为文本文件的编码和和编译器的不一致导致的.我文本文件用的编码是UTF-8,而编译器是ANSI,不匹配,所以输出乱码.文本另存为时把编码改为A ...
- 【Java】学习路径61-“伪”枚举类型
public class RolyType { public static final int TEACHER = 0; public static final int STUDENT = 1; pu ...
- Hack The Box( Starting Point )
Hack The Box [Starting Point] 初始点 -- 了解渗透测试的基础知识. 这一章节对于一个渗透小白来说,可以快速的成长.以下将提供详细的解题思路,与实操步骤. TIER 0 ...
- 第七十四篇:Vue组件父子传值
好家伙, 1.组件之间的关系 在项目开发中,组件之间的最常见关系分为如下两种: (1)父子关系 (2)兄弟关系 2.父子之间的数据共享 (1)父->子共享数据 父组件向子组件共享数据需要使用自定 ...