zoukankan      html  css  js  c++  java
  • thinkphp5使用空模块

    今天想做一个功能,可以后台设置url是二级域名(也是指向同一个服务器)还是一级域名(域名/模块),网上找了找,TP3.2开始取消了空模块。所以只能自己修改框架源码了。

    ----------有点晚,明天再写-----------

    --------------------继续------------------

    首先我随机打了一个模块名,TP就报错了,因为没有这个模块。然后我看到了如下错误:

    然后我就看到了报错的行号,跟处理错误的地方。(tp5的报错真的比以前好啊 )。

    就决定改这里了。

    else if(Config::get('empty_module')){//添加的
                    define('MODULE_NAME', $module);
                    //设置空模块
                    $module = Config::get('empty_module');
                    // 初始化模块
                    $request->module($module);
                    $config = self::init($module);
                    // 模块请求缓存检查
                    $request->cache($config['request_cache'], $config['request_cache_expire'], $config['request_cache_except']);
    
                }
    

      加了个else if进去,empty_module是没有的,要自己在配置文件里添加。

    define('MODULE_NAME', $module);这里为了在控制器里能够获取到之前要访问的空模块名,tp5把以前的MODULE_NAME取消了,可以了
    $request->module()获取到,可是上面的更改代码中
    // 初始化模块
    $request->module($module);
    这句就把module名更改为我要设置的空模块了,所以
    $request->module();就获取不到用户要访问的模块名了。

    要实现我要的功能,我还设置了空控制器,空方法。

    这个跟其他是一样的。

    空控制器:

    因为我设置的空模块名是error,所以要就在error文件夹下的controller下 建一个Error.php。

    空操作就是在在方法里面建立一个_empty()方法。

    最后我的是这样的。

    TP5不建议使用echo直接输出(我是为了测试方便。。。)。

    这样就用户就可以随便访问,没有的模块就交给了Error模块的_empty处理了。

  • 相关阅读:
    centos7: 将nginx,php-fpm加入开机启动
    centos7: php7.2.9安装配置
    centos7: nginx安装配置
    linux编译安装mysql5.1.x
    docker删除镜像的时候报错--image has dependent child images
    数据库sql优化总结之2-百万级数据库优化方案+案例分析
    数据库sql优化总结之1-百万级数据库优化方案+案例分析
    MongoDB语法与现有关系型数据库SQL语法比较
    Redis和MongoDB的区别以及应用场景
    浏览器渲染基本原理(五):优化渲染性能
  • 原文地址:https://www.cnblogs.com/passer101/p/7248056.html
Copyright © 2011-2022 走看看