ThinkPHP3.2 中空方法、空控制器和空模塊的設置
1、空方法設置
問題:
當你訪問一個不存在的方法的時候: 如: http://localhost/test/index.php/Home/User/getList 會報如下錯:
:(
非法操作:getList
錯誤位置
FILE: D:\phpStudy\WWW\test\ThinkPHP\Library\Think\Controller.class.php LINE: 170
解決:
只需要在控制器中寫如下方法便OK。
/**
* 空操作
*/
public function _empty()
{
$this->error( '很抱歉,您要訪問的頁面不存在!' );
}
2、空控制器設置
問題:
當你訪問一個不存在的控制器的時候: 如: http://localhost/test/index.php/Home/Power/getList 會報如下錯:
:(
無法加載控制器:Power
錯誤位置
FILE: D:\phpStudy\WWW\test\ThinkPHP\Library\Think\App.class.php LINE: 101
解決:
新加一個空控制器、然後將空操作方法放置其中。
新建控制器:EmptyController.class.php
具體代碼如下:
<?php
namespace Home\Controller;
use Think\Controller;
class EmptyController extends Controller
{
/**
* 空操作
*/
public function _empty()
{
$this->error( '很抱歉,您要訪問的頁面不存在!' );
}
}
?>
3、空模塊設置
問題:
當你訪問一個不存在的模塊的時候: 如: http://localhost/test/index.php/Boss/User/getList 會報如下錯:
:(
無法加載模塊:Boss
錯誤位置
FILE: D:\phpStudy\WWW\test\ThinkPHP\Library\Think\Dispatcher.class.php LINE: 178
解決:
結合上面的空方法、空控制器。
在公共配置文件 ( \test\ThinkPHP\Conf\convention.php ) 中添加以下配置:
// 允許訪問的模塊
'MODULE_ALLOW_LIST' => array( 'Home','Admin' ),
// 默認模塊
'DEFAULT_MODULE' => 'Home',
// 上面的'DEFAULT_MODULE' 很重要
// 因爲當你模塊名寫錯的時候,tp的基類已經把錯的模塊名當成了控制器名,就會變成Home/Boss,也時候就是走的空控制器了