pbootcms二次开发增加例子,Pbootcms文章,PB 教程,新手站长网
  • 首页
  • 站长入门
    • 外贸建站
    • WooCommerce
    • 建站入门
    • 域名知识
    • 编程代码
    • 工具资源
    • 网站优化
    • 数据库
    • 服务器
    • 小程序
    • 电商
    • 编程英语
  • Cms文章
    • wordpress
    • pbootcms
    • zblog
    • 易优
    • 帝国cms
    • 迅睿
  • PB 教程
    • 新手入门教程
    • Pbootcms文章
    • 用户使用手册
    • 常见问题解答
    • pbootcms小程序
  • 应用市场
  • 笔记分享
    • 网络安全
    • 自媒体
    • 抖音
    • 快手
    • 其他
    • 手机技巧
  • 会员中心
首页 > PB 教程 > Pbootcms文章 >

pbootcms二次开发增加例子

2022-08-11 发布在 Pbootcms文章0

增加一个【续费客户】菜单:

重新登录后,就可以看到侧栏菜单。

五、新建控制器

默认情况,我们新建模块,需要在 apps/admin/controller 目录下新建控制器

例如:RenewalController.php

配置好命名空间后即可访问。

但是我们看上面的配置都是分模块的,例如:content,member,system,这个在哪里配置呢?

分模块配置,需要单独的配置路由:

位置:apps / common / route.php

六、get 函数

在使用PbootCMS进行二次开发的时候,经常会看到使用 get 函数,例如:

$id = get('id', 'int');$mcode = get('mcode', 'var');$keywords = get('keywords', 'vars');

通过该 get 函数,可以用于接收参数,并且制定类型,具体函数类型:core / function / helper.php

然后是这个 filter 方法:

复制代码
function filter($varname, $condition)
{    // 变量名称文本
    if (array_key_exists($varname, $condition) && $condition[$varname]) {        $vartext = $condition[$varname];
    } else {        $vartext = $varname;
    }    
    // 数据源
    if (array_key_exists('d_source', $condition)) {        switch ($condition['d_source']) {            case 'post':                $data = @$_POST@[$varname];                break;            case 'get':                $data = @$_GET@[$varname];                break;            case 'cookie':                $data = @$_COOKIE[$varname];                break;            case 'session':                $data = session($varname);                break;            case 'both':                $data = @$_POST@[$varname] ?: @$_GET@[$varname];                break;            case 'string':                $data = $varname;            default:
                error($vartext . '数据获取方式设置错误!');
        }        // 去空格
        if (is_string($data))            $data = trim($data);
    } else {        $data = $varname; // 没有数据源指定时直接按照字符串过滤处理    }    
    // 数据为空时,进行是否允许空检测
    if (! $data && array_key_exists('d_none', $condition) && $condition['d_none'] === false) {
        error($vartext . '不能为空!');
    }    
    // 判断是否强制检测,为true时,意味着如果数据不满足要求直接报错,否则返回null
    if (array_key_exists('d_require', $condition) && $condition['d_require'] == true) {        $require = true;
    } else {        $require = false;
    }    
    // 数据类型检测
    if (array_key_exists('d_type', $condition)) {        switch ($condition['d_type']) {            case 'int':                if (! preg_match('/^[0-9]+$/', $data)) {                    $err = '必须为整数!';
                }                break;            case 'float':                if (! is_float($data)) {                    $err = '必须为浮点数!';
                }                break;            case 'num':                if (! is_numeric($data)) {                    $err = '必须为数字!';
                }                break;            case 'letter':                if (! preg_match('/^[a-zA-Z]+$/', $data)) {                    $err = '只能包含字母!';
                }                break;            case 'var':                if (! preg_match('/^[\w\-\.]+$/', $data)) {                    $err = '只能包含字母、数字、划线、点!';
                }                break;            case 'bool':                if (! is_bool($data)) {                    $err = '必须为布尔类型!';
                }                break;            case 'date':                if (! strtotime($data)) {                    $err = '必须为日期类型!';
                }                break;            case 'array':                if (! is_array($data)) {                    $err = '必须为数组类型!';
                }                break;            case 'object':                if (! is_object($data)) {                    $err = '必须为对象类型!';
                }                break;            case 'vars':                if (! preg_match('/^[\x{4e00}-\x{9fa5}\w\-\.,\s]+$/u', $data)) {                    $err = '只能包含中文、字母、数字、横线、点、逗号、空格!';
                }                break;            default:                if ($condition['d_type'])
                    error($vartext . '数据类型设置错误!');
        }
    }    
    // 非必须或必须但无错误时执行
    if ((! $require || ($require && ! isset($err)))) {        
        // 正则匹配
        if (array_key_exists('d_regular', $condition)) {            if (! preg_match($condition['d_regular'], $data)) {                $err = '不符合正则表达式规则!';
            }
        }        // 最大值匹配
        if (array_key_exists('d_max', $condition)) {            if (is_numeric($data)) {                if ($data > $condition['d_max']) {                    $err = '不能大于' . $condition['d_max'];
                }
            } else {                if (mb_strlen($data) > $condition['d_max']) {                    $err = '长度不能大于' . $condition['d_max'];
                }
            }
        }        // 最小值匹配
        if (array_key_exists('d_min', $condition)) {            if (is_numeric($data)) {                if ($data < $condition['d_min']) {                    $err = '不能小于' . $condition['d_min'];
                }
            } else {                if (mb_strlen($data) < $condition['d_min']) {                    $err = '长度不能小于' . $condition['d_min'];
                }
            }
        }
    }    
    // 如果为必须且有错误,则显示错误,如果非必须,但有错误,则设置数据为null
    if ($require && isset($err)) {
        error($vartext . $err);
    } elseif (isset($err)) {        $data = null;
    }    
    // 如果设置有默认值,默认值
    if (array_key_exists('d_default', $condition)) {        $data = (! is_null($data)) ? $data : $condition['d_default'];
    }    
    if (is_string($data)) {        $data = trim($data); // 去空格
        $data = preg_replace_r('/()|()/', '', $data); // 去十六进制括号
        $data = preg_replace_r('/pboot@if/i', 'pboot@if', $data); // 过滤插入cms条件语句
        $data = preg_replace_r('/pboot@sql/i', 'pboot@sql', $data); // 过滤插入cms条件语句
        $data = preg_replace_r('/GET\[/i', 'GET@[', $data);        $data = preg_replace_r('/POST\[/i', 'POST@[', $data);
    }    
    // 销毁错误
    unset($err);    
    // 返回收据
    return escape_string($data);
}
复制代码

到此,基本上就可以用PbootCMS做二次开发了。



如果您的问题还未解决可以联系站长付费协助。 加入我们

有问题可以加入技术QQ群一起交流学习
本站vip会员 请加入无忧模板网 VIP群(50604020) PS:加入时备注用户名或昵称
普通注册会员或访客 请加入无忧模板网 技术交流群(50604130)
客服微信号:15898888535
声明:本站所有文章资源内容,如无特殊说明或标注,均为采集网络资源。如若内容侵犯了原著者的合法权益,可联系站长删除。

侧栏 目录 控制器 登录 新建 配置 增加 菜单 模块 续费
赏
上一篇 PbootCMS使用的是 fontawesome
下一篇 PbootCMS2.0教程之对接七牛云功能

相关文章

  • PbootCMS后台关闭验证码,登录提示验证码不能空的解决方法
  • python 已经安装了模块但是还提示 ModuleNotFoundError: No module named 'pdf2docx' 解决办法
  • 易优cms控制器进行验证的方法
  • aspcms安装教程(如何安装配置asp开发环境)
  • flash菜单制作教程,flash player 菜单
  • ps图案扩边教程(ps怎么增加人脸五官轮廓感)

热门

  • 1 PbootCMS网站模板安装教程 PbootCMS新手安装教程图文详细
  • 2 pbootcms授权方式 pbootcms官方网站打不开授权不了怎么办
  • 3 PbootCMS文章列表没有缩略图时显示指定的默认图片
  • 4 PbootCMS后台关闭验证码,登录提示验证码不能空的解决方法

应用市场

  • ¥100 采集文章自动推送百度插件 PHP插件支持推送百度当天文章

    ¥100 采集文章自动推送百度插件 PHP插件支持推送百度当天文章

    2025-01-19

  • ¥50 pbootcms副栏目多选功能 默认只能多选一个 此插件可多选多个栏目

    ¥50 pbootcms副栏目多选功能 默认只能多选一个 此插件可多选多个栏目

    2025-01-19

  • ¥100  根据标题生成图片,文章页自动配标题配图,避免版权问题,所有cms通用php

    ¥100 根据标题生成图片,文章页自动配标题配图,避免版权问题,所有cms通用php

    2025-01-19

  • ¥300 pbootcms插件 附件阿里云OSS直传适合大文件视频类

    ¥300 pbootcms插件 附件阿里云OSS直传适合大文件视频类

    2025-01-19

热门标签

置顶   发短   撤销   时光   Centos8   长度   发多   基础库   Helvetica   找到   NET   投资   有关   db   客户机   HP   SEOer   创建   播放量   消费者   工具栏   卫生纸   专业版   nova8   申诉   低调   Neue   首先   业务   暴富   历程   stripos   马木马   USB   苦恼   网址   博主   产品   文档   爆单  
  • 站长入门
  • Cms文章
  • PB 教程
  • 应用市场
  • 笔记分享
  • 会员中心
  • XML地图

Copyright © 2018-2020 新手站长网 All Rights Reserved.
免责声明:本站所有资源(模板、图片、字体等)搜集整理于互联网或者网友提供,仅供学习与交流使用,如果不小心侵犯到你的权益,请及时联系我们删除该资源,邮箱mcuv#qq.com。 鲁ICP备2021016954号-3 网站模板

实用工具

觉得文章有用就打赏一下吧

微信扫一扫打赏