🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
## 控制器 FastAdmin插件中的控制器和ThinkPHP5的控制器类似,请查看ThinkPHP5`控制器`章节 请参考:https://www.kancloud.cn/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`即可获取原生请求的数据,当使用原生请求的数据时务必注意服务端的安全处理和安全输出。