今天想做一個功能,可以后台設置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處理了。