插件控制器也可分為后臺控制器(admin)和前臺控制器(home),如果你的插件不需要用到鉤子功能而又需要分前后臺,還是建議你用模塊的方式來開發。
>[danger]在開始插件開發前,一定要了解清楚插件的目錄結構。
~~~
/plugins/test/
├─admin 插件后臺控制器目錄(非必須)
│ ├─Index.php 初始化的默認控制器
├─home 插件前臺控制器目錄(非必須)
│ ├─Index.php 初始化的默認控制器
├─model 插件模型目錄(非必須)
├─sql 模塊SQL文件目錄(非必須)
│ ├─install.sql 安裝SQL文件
│ ├─uninstall.sql 卸載SQL文件
├─validate 驗證器目錄(非必須)
├─view 插件模板目錄(非必須)
│ ├─admin 插件后臺模板目錄
│ │ ├─index 控制器模板目錄(以控制器命名)
│ │ │ ├─index.php 模板文件(示例)
│ ├─home 插件前臺模板目錄
│ │ ├─index 控制器模板目錄(以控制器命名)
│ │ │ ├─index.php 模板文件(示例)
│ ├─widget 插件鉤子模板目錄
│ │ │ ├─system_hook.php 鉤子模板(示例)
├─info.php 插件基本信息
├─menu.php 插件后臺管理菜單節點
├─test.php 插件與鉤子的實現方法
~~~
## 后臺控制器(/plugins/test/admin/)
>[info] 問:什么情況下需要后臺控制器?
答:當你的插件需要用到后臺管理某些數據的時候,你就可以創建后臺控制器來進行數據的管理。
創建Index控制器``/plugins/test/admin/Index.php``,所有插件后臺控制器必須繼承`` app\common\controller\Common`` 控制器,控制器里面的數據庫增刪改查、驗證等均跟ThinkPHP5完全一樣。示例代碼如下:
~~~php
<?php
namespace plugins\test\admin;
use app\common\controller\Common;
defined('IN_SYSTEM') or die('Access Denied');
/**
* [測試插件]后臺Index控制器
* @package plugins\test\admin
*/
class Index extends Common
{
public function show()
{
$data = [];
$this->assign('data', $data);
return $this->fetch();
}
}
~~~
>[info] 訪問地址:/admin.php/admin/plugins/run?_p=test&_c=index&_a=show
參數說明:_p=插件名&_c=控制器名&_a=方法名
## 前臺控制器(/plugins/test/home/)
>[info] 問:什么情況下需要前臺控制器?
答:當你的插件需要有一個或多個前臺展示頁面時,就可以通過前臺控制器來實現。
創建Index控制器``/plugins/test/home/Index.php``,所有插件前臺控制器必須繼承`` app\common\controller\Common`` 控制器,控制器里面的數據庫增刪改查、驗證等均跟ThinkPHP5完全一樣。示例代碼如下:
~~~php
<?php
namespace plugins\test\home;
use app\common\controller\Common;
defined('IN_SYSTEM') or die('Access Denied');
/**
* [測試插件]前臺Index控制器
* @package plugins\test\home
*/
class Index extends Common
{
public function detail()
{
$data = [];
$this->assign('data', $data);
return $this->fetch();
}
}
~~~
>[info] 前臺控制器訪問路徑,支持兩種路徑格式:
>格式1:/plugins/插件名/控制器名/方法名
>格式2:/plugins.php?_p=插件名&_c=控制器名&_a=方法名
- 序言
- 環境配置
- 下載及安裝
- 目錄結構
- 系統配置
- 多語言
- 命令行(pro版)
- 自動生成模塊或插件(build)
- 生成模塊
- 生成插件
- 自動生成增刪改查(crud)
- 第一步:創建數據表
- 第二步:使用crud指令生成
- 自動生成類庫文件(make)
- 生成控制器文件(make:controller)
- 生成模型文件(make:model)
- 生成邏輯文件(make:logic)
- 生成服務文件(make:service)
- 生成驗證器文件(make:validate)
- 構建器(pro版)
- 表單構建器(form)
- 表單屬性設置
- 添加表單項
- 文本框(text)
- 隱藏域(hidden)
- 密碼框(password)
- 文本域(textarea)
- 單文件(file)
- 多文件(files)
- 單圖(image)
- 多圖(images)
- 開關(switch)
- 單選(radio)
- 多選(checkbox)
- 下拉框(select)
- 標簽(tag)
- 日期時間(datetime)
- 顏色選擇器(color)
- 富文本編輯器(editor)
- 滑塊(slider)
- 評分(rate)
- 穿梭框(transfer)
- 進度條(progress)
- 樹形(tree)
- 聯動(linkage)
- 自定義html(html)
- 分隔線(line)
- 文字(txt)
- 下拉框增強版(select+)
- 數據表格(table)
- 添加表單分組(group)
- 柵格布局(grid)
- 觸發器(trigger)
- 通用上傳方法
- 表格構建器(table)
- 表格基礎配置
- 添加表頭工具欄
- 添加表格篩選
- 頁面提示(pageTips)
- 引入 JS 文件
- 引入 CSS 文件
- 渲染額外 JS 代碼
- 渲染額外 CSS 代碼
- 模塊開發
- 1.生成模塊
- 2.創建菜單
- 3.創建控制器
- 后臺通用方法
- 插件開發
- 1.新建插件
- 2.插件配置
- 3.插件控制器
- 4.插件模板
- 5.插件鉤子
- 模板替換變量
- 公共函數庫
- 后臺通用JS方法
- 常見問題
- 官方模塊
- CMS內容管理模塊
- 目錄結構
- 模板標簽
- API接口
- 欄目頁/內容頁
- 小程序發布
- 官方插件
- 第三方登錄
- excel插件
- 萬能采集
- 采集規則
- 采集內容