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處理了。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM