THINKPHP 解决模块不存在时出现空页面的问题

遇到的问题:

最近使用THINKCMF开发了一个企业网站,因为之前客户的域名变更过,然后就发现当某个模块不存在的时候就出现了空页面

THINKPHP论坛 上有人说在项目里添加一个EmptyAction.class.php,然后再写业务逻辑,结果搞了好长时间我一直都没有找到Action目录

最后才发现ThinkCmf使用的是Thinkphp3.2而作者写的是3.1

在网上逛了半天也没有解决问题,不得已还是要自己出马

解决方案:

  1. 在 \application\Common\Controller\目前添加“EmptyBaseController.class.php”文件
  1. <?php/**
    *@Author:HTL
    *@Email:[email protected]
    *@DateTime:2015-07-1411:22:18
    *@Description:空模板控制器
    *@use:其他项目添加EmptyController文件并继承该类即可
    */namespace Common\Controller;useThink\Controller;class EmptyBaseController extendsController{function_initialize(){//项目配置文件中的配置项
    $emptyPath=C("EMPTY_PATH");//如果未配置默认的地址
    if(!$emptyPath || empty($emptyPath))$emptyPath="/";header("Location:".$emptyPath);exit();
    }
    }
     

2.在所有项目的Controller目前里添加EmptyController.class.php并继承”\Common\Controller\EmptyBaseController“

  1. <?php/**
    *@Author:HTL
    *@Email:[email protected]
    *@DateTime:2015-07-1411:22:18
    *@Description:空模板控制器,直接继承\Common\Controller\EmptyBaseController即可
    */namespace Portal\Controller;class EmptyControllerextends \Common\Controller\EmptyBaseController{
    function _initialize(){
    parent::_initialize();
    }
    }

3.在\data\conf\config.php里添加" EMPTY_PATH "项自定义当访问不存在的模块时需要跳转的页面

  1. <?php return array(‘EMPTY_PATH‘=>‘/index.php‘,/*访问不存在的模块时跳转的地址*/
    //其他配置项
    );?>

参考:

THINKPHP 空控制器

ThinkPHP访问不存在的模块跳到404页面

THINKPHP论坛 ThinkPHP访问不存在的模块跳到404页面

时间: 2024-09-20 16:25:54

THINKPHP 解决模块不存在时出现空页面的问题的相关文章

【php】thinkphp以post方式查询时分页失效的解决方法

好久没有写博客了,最近说实话有点忙,各个项目都需要改bug.昨天晚上一直没有解决的php项目中的bug,就在刚才终于搞定,在这里还需要感谢博客园大神给的帮助! 具体问题描述 最近遇到一个非常棘手的问题,也是因为刚入手thinkphp.在做项目的过程中,因为需要非常多的查询条件,如果以get方式提交表单的话,会因为url长度限制而报错,所以必须使用post方式提交表单数据,但是在分页的过程中,遇到了问题,因为thinkphp自带的分页是以a标签的形式,进行下一页的,这样查询条件就没有传入后台,导致

解决模块间耦合的设计模式

大家都知道,模块间的耦合不利于代码的可读性和可维护性,好的代码一般都会按功能或者别的将代码模块化,那么模块化的代码之间怎么通信呢?下面来介绍两种用于模块间解耦的设计模式. 观察者模式 概念介绍 观察者模式也被称作消息机制或发布-订阅者模式,为了解决主题对象与观察者之间功能的耦合. 观察者模式有一个消息容器,和三个方法,分别是订阅信息方法.取消订阅的信息方法.发送订阅的消息方法. 例如: /* * 将观察者放在闭包中,当页面加载就立即执行 */ const Observer = (function

使用不同的C++支持库的模块混合开发时,引发异常展开不正常,抛异常竟引出一个SIGSEGV

如果你使用gcc对一部分模块进行了GNUMake的编译,这些编译出动态库使用在Gradle编译框架下的项目.那么就有可能出现题目中的情况,使用不同的C++支持库的模块混合开发时,引发异常展开不正常. 当我们使用GNUMake编译的项目进行移植编译时,都会使用Ndk的toolchains下对应的gcc进行编译,并且链接到对应的c++支持库.但是Gradle(或者说Android Studio)默认使用clang,并且执意链接到llvm对应的libc++支持库. 以我的情况为例子,我选用了Ice-3

解决Python读取文件时出现UnicodeDecodeError: &#39;gbk&#39; codec can&#39;t decode byte...

用Python在读取某个html文件时会遇到下面问题: 出问题的代码: 1 if __name__ == '__main__': 2 fileHandler = open('../report.html', mode='r') 3 4 report_lines = fileHandler.readlines() 5 for line in report_lines: 6 print(line.rstrip()) 修改方式是在open方法指定参数encoding='UTF-8': if __nam

Python,ElementTree模块处理XML时注释无法读取和保存的问题

from xml.etree import ElementTree class CommentedTreeBuilder ( ElementTree.XMLTreeBuilder ): def __init__ ( self, html = 0, target = None ): ElementTree.XMLTreeBuilder.__init__( self, html, target ) self._parser.CommentHandler = self.handle_comment d

解决真机调试时Eclipse DDMS上打不开/data目录的问题

一般真机调试时DDMS里面的File Explorer是不能打开/data 目录的,不过也很容易解决. 1.首先手机要root.这个很简单,网上一大堆资料和软件. 2.仅仅root之后还不行,下载一个ES 文件浏览器(或类似的软件),授予该软件root权限. 3.然手在ES 里面找到/data 目录,修改它的属性.把它的读.写.执行的权限全部开放出来. 然后就大功告成了.

解决PHP curl https时error 77(Problem with reading the

解决PHP curl https时error 77(Problem with reading the SSL CA cert (path? access rights?)) 服务器环境为CentOS,php-fpm,使用curl一个https站时失败,打开curl_error,捕获错误:Problem with reading the SSL CA cert (path? access rights?) 解决方案:1. sudo yum install ca-certificates (无论有没

解决远程桌面链接时出现"The RPC server is unavailable."或"RPC服务器不可用"的问题

解决远程桌面链接时出现"The RPC server is unavailable."或"RPC服务器不可用"的问题 解决远程桌面链接时出现"The RPC server is unavailable."或"RPC服务器不可用"的问题 有时候当用远程桌面链接某台Windows主机的时候会出现"The RPC server is unavailable."的问题,并在日志里还会看到如下图所示的错误: RPC 

linux使用su切换用户提示 Authentication failure的解决方法&amp; 复制文件时,报cp: omitting directory `XXX&#39;

linux使用su切换用户提示 Authentication failure的解决方法:这个问题产生的原因是由于ubtun系统默认是没有激活root用户的,需要我们手工进行操作,在命令行界面下,或者在终端中输入如下命令: sudo passwd Password:你当前的密码 Enter new UNIX password:这个是root的密码Retype new UNIX password:重复root的密码然后会提示成功的信息. 在说明一点,使用su和sudo是有区别的,使用su切换用户需要