一個完整強大的模塊,肯定會有許許多多可以自定義的配置,下面我們來詳細講解模塊配置信息的各項參數。
我們知道,模塊配置信息文件`info.php`是返回一個數組,里面包含了關于模塊的各項信息。
| 參數 | 含義 | 類型 | 必填 |
| --- | --- | --- | :---: |
| name | 模塊名 | string | 是 |
| title | 模塊標題 | string | 是 |
| identifier | 模塊唯一標識 | string | 是 |
| icon | 字體圖標 | string | 否 |
| description | 模塊描述 | string | 是 |
| author | 開發者 | string | 是 |
| author_url | 開發者網址 | string | 否 |
| version | 模塊版本 | string | 是 |
| need_module | 模塊依賴 | array | 否 |
| need_plugin | 插件依賴 | array | 否 |
| tables | 數據表 | array | 否 |
| database_prefix | 表前綴 | string | 否 |
| config | 模塊參數配置 | array | 否 |
| access | 數據授權配置 | array | 否 |
| action | 行為參數配置 | array | 否 |
| trigger | 觸發器配置 | array | 否 |
下面來逐一講解各個參數。
## name - 模塊名
由字母和下劃線組成,建議全部使用小寫字母,如:cms、user、shop等等,因為系統會對應模塊名和數據表名。
## title - 模塊標題
該標題會在頂部導航顯示,也會在模塊管理中顯示。如:門戶、用戶、商城等。
## identifier - 模塊唯一標識
這是區分不同開發者不同模塊的重要信息,格式:模塊名.開發者標識.module,如:`cms.ming.module` 。
## icon - 字體圖標
系統內置了三套字體圖標:`SIMPLE LINE ICONS`、`FONT AWESOME`、`GLYPHICONS` ,如填寫:"fa fa-user"。當然,如果還不滿足要求,您可以自己添加別的字體圖標庫。
## description - 模塊描述
對模塊進行簡略的描述,以便使用者能快速的了解該模塊的功能或者其他信息。
## author - 開發者
模塊的開發者名稱
## author_url - 開發者網站地址
開發者網站地址,請填寫完整的url地址,如:http://www.dolphinphp.com
## version - 模塊版本號
格式采用三段式:主版本號.次版本號.修訂版本號,如:1.0.1。以后的模塊升級,模塊版本比較都按這種格式,請務必填寫正確。
## need_module - 模塊依賴
>[info] 格式[[模塊名, 模塊唯一標識, 依賴版本, 對比方式]]
有些模塊需要依賴于某個或幾個模塊,那么就必須填寫所依賴的模塊信息,如:
~~~
'need_module' => [
['cms', 'cms.ming.module', '1.0.0']
]
~~~
表示模塊依賴于`cms`模塊,并且該模塊的唯一標識符是`cms.ming.module`,因為不同開發者都可能開發名為`cms`的模塊,這樣,模塊唯一標識的作用就體現出來了。
>[info] 其中,模塊名、模塊唯一標識、依賴版本這三個是必填的,如果不填寫對比方式,則默認為“=”,即等于某個版本。
版本比較使用了php的`version_compare`函數,該函數支持的比較操作符有:<、 lt、<=、 le、>、 gt、>=、 ge、==、 =、eq、 !=、<> 和 ne。
| 比較操作符 | 含義 |
| --- | --- |
| <、 lt | 小于 |
| <=、 le | 小于等于 |
| >、 gt | 大于 |
| >=、 ge | 大于等于 |
| ==、 =、eq | 等于 |
| !=、<>、 ne | 不等于 |
>[danger] 注意:此參數區分大小寫,所以它的值應該是小寫的,不能填寫“LG”、“GT”等。
所依賴的模塊需要大于某個版本
~~~
'need_module' => [
['cms', 'cms.ming.module', '1.0.0', '>']
]
// 或者
'need_module' => [
['cms', 'cms.ming.module', '1.0.0', 'gt']
]
~~~
依賴多個模塊
~~~
'need_module' => [
['cms', 'cms.ming.module', '1.0.0', '>'],
['admin', 'admin.dolphinphp.module', '1.0.1']
]
~~~
## need_plugin - 插件依賴
>[info] 格式[[插件名, 插件唯一標識, 依賴版本, 對比方式]]
如果您的模塊依賴有些插件,則需填寫插件依賴,如:
~~~
'need_plugin' => [
['sms', 'sms.ming.plugin', '1.0.0']
]
~~~
其他用法和模塊依賴類似,這里就不贅述了。
## tables - 數據表
如果您的模塊包含了數據表,則需填寫數據表名。比如,cms模塊有兩張表,`cms_article`、`cms_category`,則這么填寫:
~~~
'tables' => [
'cms_article',
'cms_category'
]
~~~
>[warning] 表名無需填寫表前綴,系統檢測的時候會自動帶上系統設置的表前綴。
## database_prefix - 表前綴
模塊的數據表名建議格式為:表前綴+模塊名+控制器,比如:`dp_admin_config`,那么`database_prefix`參數則填寫:`dp_`。填寫了表前綴后,系統在安裝模塊時,會將此表前綴替換成目標系統所設置的表前綴,方便不同用戶安裝您的模塊。
## config - 模塊參數配置
如果模塊需要自定義一些配置信息,則需配置`config`參數。
它的用法和[添加表單項通用方法](添加表單項通用方法.md)的`addFormItems`方法一致,可設置系統內置的30多種表單類型,比如:單選,復選、下拉、單行文本,編輯器、聯動等等。
我們在開發微信模塊的時候,需要給用戶設置appid等信息,那么可以這樣設置:
~~~
'config' => [
['text', 'appid', 'AppId', '應用ID,登錄 微信公眾平臺 查看'],
['text', 'secret', 'AppSecret', '應用密鑰,登錄 微信公眾平臺 查看'],
['text', 'token', 'Token', '令牌,用于接口驗證,登錄 微信公眾平臺,在【基本配置】中設置'],
['text', 'aeskey', 'EncodingAESKey', '消息加解密密鑰,登錄 微信公眾平臺,在【基本配置】中設置'],
]
~~~
不同類型的參數是不同的,這個我們在后面的章節會講到,這里不理解不要緊,只要知道如果需要設置配置信息,則按這種格式去配置。
如果需要配置分組,那么可以這樣寫:
~~~
'config' => [
['group',
[
'分組1' => [
['radio', 'status1', '單選', '', ['1' => '開啟', '0' => '關閉'], 1],
['text', 'text1', '單行文本', '提示', 'x'],
['textarea', 'textarea1', '多行文本', '提示'],
['checkbox', 'checkbox1', '多選', '提示', ['1' => '是', '0' => '否'], 0],
],
'分組2' => [
['textarea', 'textarea2', '多行文本', '提示'],
['checkbox', 'checkbox2', '多選', '提示', ['1' => '是', '0' => '否'], 0],
]
]
]
]
~~~
>[info] 配置好這些內容后,安裝模塊后才生效,并且需要在某個控制器執行 **return $this->moduleConfig();** 即可自動生成這些配置的頁面
>比如在cms模塊的Confg控制器中的index方法調用 **return $this->moduleConfig();**
~~~
class Config extends Admin
{
/**
* 文章設置頁
* @return mixed
*/
public function index()
{
// 調用ModuleConfig()方法即可
return $this->moduleConfig();
}
}
~~~
那么只要訪問這個方法,即可管理模塊配置信息。
>[info] 如何獲取模塊的配置,請參考[方法參考](方法參考.md)
## access - 授權配置
>[danger] 注意:1.3.2版本以后的數據授權,請查看[數據授權(1.3.2+)](數據授權.md)
有些模塊可能有這樣的需求,需要給不同用戶分配不同的權限,比如某些用戶只能看某些內容,那么可以填寫授權配置。
>[danger] 注意:這里的授權配置只是提供給您一個方便的操作去管理和設置權限節點,獲取到某個用戶的授權之后該如何操作則需要開發者自己去實現。
~~~
'access' => [
'group' => [
"tab_title" => '部門授權',
"table_name" => "admin_group",
"primary_key" => "id",
"parent_id" => "pid",
"node_name" => "name"
],
],
~~~
* `group` 分組標識,名字自定義,可以設置多個授權。
* `tab_title` tab導航標題
* `table_name` 表名,表示要關聯哪張表,不需要填寫表前綴,這里表示部門表。
* `primary_key` 主鍵字段名
* `parent_id` 父級id字段名
* `node_name` 權限節點字段名
* `model_name` 模型名(可選)
* `page_tips` 頁面提示(可選,1.0.3+)
* `tips_type` 提示類型(可選,默認為info,1.0.3+)
`dp_admin_group`數據表有如下三個字段,分別對應`primary_key`、`parent_id`、`node_name`。

安裝模塊之后,在“用戶管理”中,點擊操作欄的 按鈕,可進入授權頁面。

這里出現的節點,是從上面定義的表`dp_admin_group`獲取的,這里設置了授權之后,在需要判斷當前用戶或者某個用戶是否有某些權限,可以使用`Access`模型的`getAuthNode`方法和`checkAuthNode`方法。詳細用法在“用戶管理”-“數據授權”章節查看。
### 按模型獲取數據
以上說的是讀取的數據在同一張表上,如果有些數據在另外一張表,那么就不好處理了。比如上面的例子,部門名稱在另外一張表,那么用以上的方法就做不到了。
如果遇到這樣的需求,可以設置模型名。
~~~
'access' => [
'group' => [
"tab_title" => '部門授權',
"table_name" => "admin_group",
"primary_key" => "id",
"parent_id" => "pid",
"node_name" => "name",
"model_name" => 'Group'
],
],
~~~
這樣配置的話,那你必須在你模塊下有名為`Group`的模型文件,比如路徑為:`\app\模塊名\model\Group.php`
~~~
'access' => [
'group' => [
"tab_title" => '部門授權',
"table_name" => "admin_group",
"primary_key" => "id",
"parent_id" => "pid",
"node_name" => "name",
"model_name" => 'User'
],
],
~~~
如果這樣定義,那么必須存在`\app\模塊名\model\User.php`這個文件。
除此之外,該模型下必須有一個特定的方法,方法名為`access`,你只需在這個方法返回你需要展示的數據即可。
>[info]這種方法靈活性比較大,可以隨意查詢數據,只要返回的數據中,有包含上面設置的三個字段名id、pid、name即可。
## action - 行為配置
用于定義行為規則,具體參數如下
* `module` 所屬模塊(必須)
* `name` 行為標識(同個模塊內,不得重復)(必須)
* `title` 行為名稱(必須)
* `remark` 行為描述(必須)
* `rule` 行為規則
* `log` 日志規則
* `status` 狀態(0-禁用,1-啟用)默認為禁用
~~~
'action' => [
[
'module' => 'cms',
'title' => '添加文章',
'remark' => '添加文章',
'name' => 'article_add',
'log' => '用戶:[user|get_nickname] 在[time|format_time]添加了文章'
],
[
'module' => 'cms',
'name' => 'article_delete',
'title' => '刪除文章',
'remark' => '刪除文章',
'log' => '用戶:[user|get_nickname] 在[time|format_time]刪除了文章',
'status' => 1
],
],
~~~
## trigger - 觸發器配置
針對模塊參數配置(config)可設置觸發器,指定某個表單項的值為某個值時顯示某些表單項。
比如模塊參數配置如下:
~~~
'config' => [
['text', 'appid', 'AppId', '應用ID,登錄 微信公眾平臺 查看'],
['text', 'secret', 'AppSecret', '應用密鑰,登錄 微信公眾平臺 查看'],
['text', 'token', 'Token', '令牌,用于接口驗證,登錄 微信公眾平臺,在【基本配置】中設置'],
['text', 'aeskey', 'EncodingAESKey', '消息加解密密鑰,登錄 微信公眾平臺,在【基本配置】中設置'],
]
~~~
我們希望當用戶填寫`appid`為`123`時才顯示`secret`表單項,當`secret`填寫`456`時才顯示`token`和`aeskey`。
~~~
// 觸發器
'trigger' => [
['appid', '123', 'secret'],
['secret', '456', 'token,aeskey']
]
~~~
具體用法請參考[設置觸發器](設置觸發器.md)章節。
- 序言
- 環境搭建
- 下載及安裝
- 目錄結構
- 快速構建器(ZBuilder)
- 表單(form)
- 設置頁面標題
- 設置頁提示信息
- 設置表單提交地址
- 隱藏按鈕
- 添加按鈕
- 設置按鈕標題
- 添加表單項
- 復選
- 單選
- 日期
- 時間
- 開關
- 標簽
- 數組
- 分組
- 范圍
- 按鈕
- 數字框
- 密碼框
- 取色器
- 下拉菜單
- 普通聯動
- 快速聯動
- 拖拽排序
- 靜態文本
- 格式文本
- 日期時間
- 日期范圍
- 圖片裁剪
- 百度地圖
- 單文件上傳
- 多文件上傳
- 單圖片上傳
- 多圖片上傳
- 隱藏表單項
- 圖標選擇器
- 單行文本框
- 多行文本框
- 百度編輯器
- CKEditor編輯器
- wang編輯器
- markdown編輯器
- summernote編輯器
- 圖片展示(1.1.0+)
- 單文件展示(1.1.0+)
- 多文件展示(1.1.0+)
- 下拉菜單Ajax(1.3.3+)
- 復雜表格(1.4.3+)
- 數據表格(1.4.3+)
- 分組下拉菜單(1.4.3+)
- 表格選取(1.4.3+)
- 穿梭框(1.4.3+)
- 添加表單項通用方法
- 直接設置表單項
- 表單布局
- 設置Tab按鈕列表
- 設置表單數據
- 引入js文件
- 引入css文件
- 設置額外JS代碼
- 設置額外CSS樣式
- 設置額外HTML代碼
- 是否ajax方式提交
- 設置模版路徑
- 設置觸發器
- 設置表單提交確認框
- 自定義表單項(1.0.6+)
- 設置表單提交方式(1.0.6+)
- 模板變量賦值(1.0.7+)
- 設置頁面空表單項提示(1.0.7+)
- 自定義擴展表單圖標(1.2.0+)
- 設置表單令牌(1.3.1+)
- 新窗口打開返回的url(1.4.4+)
- 表格(table)
- 設置頁面標題
- 設置頁面提示信息
- 添加一列
- 字段類型
- switch
- status
- yesno
- text.edit
- textarea.edit
- password
- url
- tel
- number
- icon
- byte
- date
- time
- datetime
- date.edit
- time.edit
- datetime.edit
- picture
- pictures
- select
- callback
- link
- text
- img_url
- files(1.1.1+)
- popover(1.4.4+)
- 添加多列
- 添加數量索引
- 添加快捷編輯的驗證器
- 設置表格數據
- 隱藏第一列多選框
- 添加表頭排序
- 添加表頭篩選
- 添加表頭篩選條件
- 添加時間段篩選
- 添加一個右側按鈕
- 添加多個右側按鈕
- 添加一個頂部按鈕
- 添加多個頂部按鈕
- 自動添加按鈕
- 自動編輯按鈕
- 替換右側按鈕
- 設置搜索參數
- 設置數據庫表名
- 設置插件名稱
- 設置表格主鍵
- 設置Tab按鈕列表
- 設置分頁
- 去除分頁
- 引入js文件
- 引入css文件
- 設置額外JS代碼
- 設置額外CSS樣式
- 設置額外HTML代碼
- 設置額外HTML代碼-模板文件(1.4.0+)
- 設置模版路徑
- 添加行class名
- 添加頂部下拉篩選
- 設置頁面空數據提示(1.0.7+)
- 模板變量賦值(1.0.7+)
- 設置使用原始數據字段(1.0.8+)
- 設置搜索區域(1.1.0+)
- 設置表格高度(1.3.0+)
- 固定左列(1.3.0+)
- 固定右列(1.3.0+)
- 設置列寬(1.3.0+)
- 設置隱藏列(1.3.0+)
- 側欄(aside)
- 添加區塊
- 設置Tab按鈕列表
- 追加Tab按鈕列表
- 設置當前tab
- 設置單個tab內容
- 設置多個tab內容
- 追加tab內容
- 覆蓋側欄
- 模塊開發
- 創建模塊信息文件
- 安裝模塊
- 模塊配置
- 控制器
- 創建菜單節點
- 第一個控制器
- 模塊參數配置頁面
- 方法參考
- 數據授權(1.3.2+)
- 插件開發
- 插件入口文件
- 插件基本信息
- 管理界面的字段信息
- 新增或編輯的字段信息
- 插件鉤子
- 觸發器
- 原數據庫表前綴
- 插件配置信息
- 安裝和卸載Sql文件
- 控制器
- 模型
- 驗證器
- 視圖
- 方法參考
- 實踐教程
- 變量參考
- 函數參考
- 安全相關
- 常見問題
- 其他雜項
- 更新日志
- 升級指導
- 貢獻名單
- 關于文檔