thinkphp5使用空模塊

今天想作一個功能,能夠後臺設置url是二級域名(也是指向同一個服務器)仍是一級域名(域名/模塊),網上找了找,TP3.2開始取消了空模塊。因此只能本身修改框架源碼了。php

----------有點晚,明天再寫-----------緩存

--------------------繼續------------------服務器

首先我隨機打了一個模塊名,TP就報錯了,由於沒有這個模塊。而後我看到了以下錯誤:框架

而後我就看到了報錯的行號,跟處理錯誤的地方。(tp5的報錯真的比之前好啊 )。測試

就決定改這裏了。url

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是沒有的,要本身在配置文件裏添加。blog

define('MODULE_NAME', $module);這裏爲了在控制器裏可以獲取到以前要訪問的空模塊名,tp5把之前的MODULE_NAME取消了,能夠了
$request->module()獲取到,但是上面的更改代碼中
// 初始化模塊
$request->module($module);
這句就把module名更改成我要設置的空模塊了,因此
$request->module();就獲取不到用戶要訪問的模塊名了。

 

要實現我要的功能,我還設置了空控制器,空方法。get

這個跟其餘是同樣的。源碼

空控制器:域名

由於我設置的空模塊名是error,因此要就在error文件夾下的controller下 建一個Error.php。

空操做就是在在方法裏面創建一個_empty()方法。

最後個人是這樣的。

TP5不建議使用echo直接輸出(我是爲了測試方便。。。)。

這樣就用戶就能夠隨便訪問,沒有的模塊就交給了Error模塊的_empty處理了。

相關文章
相關標籤/搜索