## 控制器
FastAdmin插件中的控制器和ThinkPHP5的控制器類似,請查看ThinkPHP5`控制器`章節
請參考:http://www.hmoore.net/manual/thinkphp5/118047
## 特別提醒
FastAdmin插件控制器和ThinkPHP5控制器不同之處主要有以下幾點
1.基類不同
~~~undefined
插件控制器基類為:\think\addons\Controller
ThinkPHP5控制器基類為:\think\Controller
~~~
2.請求URL不同
~~~javascript
插件控制器請求方法為:http://www.fa.com/addons/mydemo/控制器名/方法
ThinkPHP5控制器請求方法為:http://www.fa.com/模塊名/控制器名/方法
~~~
3.當使用層級控制器時
~~~javascript
插件控制器請求方法為:http://www.fa.com/addons/mydemo/目錄名.控制器名/方法
ThinkPHP5控制器請求方法為:http://www.fa.com/模塊名/目錄名.控制器名/方法
~~~
插件控制器必須繼承`\think\addons\Controller`這個基類控制器。
## 控制器定義
一個典型的控制器代碼如下:
~~~php
<?php
namespace addons\mydemo\controller;
use think\addons\Controller;
class Index extends Controller
{
public function index()
{
$this->error("當前插件暫無前臺頁面");
}
}
~~~
其文件位置位于`addons/mydemo/Index.php`。
## 控制器請求
~~~javascript
http://www.fa.com/addons/mydemo/控制器名/控制器方法
~~~
## 基類控制器
FastAdmin插件控制器的基類控制器`\think\addons\Controller`位于`vendor/karsonzhang/fastadmin-addons/src/addons/Controller.php`。
基類控制器是FastAdmin插件系統的一部分,在基類控制器進行了一系列的操作,包括插件控制器權限檢查、語言包加載、布局設定、配置加載等操作。
同時基類控制器也是繼承自`\think\Controller`,此控制器基類是ThinkPHP5自帶的基類控制器,因此也可以實現絕大多數ThinkPHP5官方文檔`控制器`章節的功能。
## 基類屬性
~~~php
protected $addon = null; //插件名稱
protected $controller = null; //控制器名稱
protected $action = null; //方法名稱
/**
* 無需登錄的方法,同時也就不需要鑒權了
* @var array
*/
protected $noNeedLogin = ['*'];
/**
* 無需鑒權的方法,但需要登錄
* @var array
*/
protected $noNeedRight = ['*'];
/**
* 權限Auth,如果用戶是登錄狀態,可以直接從中讀取用戶信息
* @var Auth
*/
protected $auth = null;
/**
* 布局模板,默認不啟用
* @var string
*/
protected $layout = null;
~~~
## 溫馨提示
`FastAdmin`中的`\think\addons\Controller`插件控制器基類控制器有啟用全局過濾,過濾方法為`trim,strip_tags,htmlspecialchars`,當使用`ThinkPHP5`的方法獲取請求的參數值時,會被過濾HTML和特殊字符,如有特殊情況下需要不過濾(如獲取小程序請求的`encryptedData`和`rawData`),可以使用`$this->request->post("參數名", "默認值", null);`將第三個參數設置為`null`即可獲取原生請求的數據,當使用原生請求的數據時務必注意服務端的安全處理和安全輸出。