Thinkphp 控制器/外掛控制器
阿新 • • 發佈:2019-02-18
外掛控制器
3.2.2版本開始支援外掛控制器的呼叫,可以通過更加方便的URL地址訪問到模組中的外掛定義的控制器。
當URL中傳入外掛控制器變數的時候,會自動定位到外掛控制器中的操作方法。
外掛控制器的變數由引數 VAR_ADDON
進行設定,預設為addon
,例如我們在URL中傳入: http://serverName/Home/info/index/addon/SystemInfo
由於傳入了addon引數,因此這裡的Info控制器並非原來的
Home/Controller/InfoController.class.php
而是呼叫SystemInfo
外掛(位於Home/Addon
目錄下面)的InfoController
Home/Addon/SystemInfo/Controller/InfoController.class.php
。外掛控制器本身的定義和普通的訪問控制器一樣,例如:
namespace Home\Addon\SystemInfo\Controller;
class InfoController extends \Think\Controller{
public function index(){
echo 'Addon SystemInfo';
}
}
這樣,我們在訪問http://serverName/Home/info/index/addon/SystemInfo的時候 就會輸出 Addon SystemInfo
如果我們的外掛目錄不是Addon,而是Plugin,那麼需要在配置檔案中定義:
'VAR_ADDON' => 'plugin'
注意:目前外掛控制器僅支援模組的外掛控制器訪問,尚不支援全域性的公共外掛。
3.2.3版本開始,外掛控制器預設和模組同級,並增加ADDON_PATH
常量用於定義外掛控制器的目錄,並且以目錄名作為外掛控制器的名稱空間根,同樣,假如我們在URL中傳入:
http://serverName/Home/info/index/addon/SystemInfo
3.2.3版本中,實際訪問的外掛控制器是
Addon/SystemInfo/Controller/InfoController.class.php
外掛控制器的定義如下:
namespace Addon\SystemInfo\Controller;
class InfoController extends \Think\Controller{
public function index(){
echo 'Addon SystemInfo';
}
}
預設情況下,外掛控制器的根目錄位於和模組同級的Addon目錄下面,如果需要更改外掛控制器的目錄,可以定義ADDON_PATH
常量,例如:
define('ADDON_PATH', APP_PATH.'Common/Addon');
並且在專案配置檔案中使用AUTOLOAD_NAMESPACE
引數重新定義Addon
的名稱空間路徑,例如:
'AUTOLOAD_NAMESPACE'=>array(
'Addon'=> APP_PATH.'Common/Addon',
)