## 配置
在`FastAdmin`應用插件開發過程中,如果需要使用到配置功能,插件系統提供了很好的支持,首先我們需要在插件目錄`addons/mydemo`創建一個`config.php`配置文件。
## 插件配置
`config.php`需要返回一個多維數組,例如:
~~~php
<?php
return [
? ?[
? ? ? ?//配置名稱,該值在當前數組配置中確保唯一
? ? ? ?'name' ? ?=> 'yourname',
? ? ? ?//配置標題
? ? ? ?'title' ? => '配置標題',
? ? ? ?//配置類型,支持string/text/number/datetime/array/select/selects/image/images/file/files/checkbox/radio/bool
? ? ? ?'type' ? ?=> 'string',
//分組選項卡,如果不需要啟用配置分組,請設置為空
? ? ? ?'group' ? ?=> '分組2',
? ? ? ?//配置select/selects/checkbox/radio/bool時顯示的列表項
? ? ? ?'content' => [
? ? ? ? ? ?'1' => '顯示',
? ? ? ? ? ?'0' => '不顯示'
? ? ? ?],
? ? ? ?//配置值
? ? ? ?'value' ? => '1',
? ? ? ?//配置驗證規則,更多規則可參考nice-validator文件
? ? ? ?'rule' ? ?=> 'required',
? ? ? ?'msg' ? ? => '驗證失敗提示文字',
? ? ? ?'tip' ? ? => '字段填寫幫助',
? ? ? ?'ok' ? ? ?=> '驗證成功提示文字',
? ? ? ?'extend' ?=> '' //擴展信息,可用于對input文本框擴展額外的屬性
? ?],
? ?[
? ? ? ?'name' ? ?=> 'yourname2',
? ? ? ?'title' ? => '配置標題2',
? ? ? ?'type' ? ?=> 'radio',
//分組選項卡
? ? ? ?'group' ? ?=> '分組2',
//當配置1值為1時才顯示,為其它值不顯示
? ? ? ?'visible' ?=> 'yourname1=1',
? ? ? ?'content' => [
? ? ? ? ? ?'1' => '顯示',
? ? ? ? ? ?'0' => '不顯示'
? ? ? ?],
? ? ? ?'value' ? => '1',
? ? ? ?'rule' ? ?=> 'required',
? ? ? ?'msg' ? ? => '驗證失敗提示文字',
? ? ? ?'tip' ? ? => '字段填寫幫助',
? ? ? ?'ok' ? ? ?=> '驗證成功提示文字',
? ? ? ?'extend' ?=> ''
? ?],
? ?[
? ? ? ?'name' ? ?=> '__tips__',
? ? ? ?'title' ? => '溫馨提示',
? ? ? ?'type' ? ?=> 'string',
? ? ? ?'content' => [],
? ? ? ?'value' ? => '該提示將出現的插件配置頭部,通常用于提示和說明',
? ? ? ?'rule' ? ?=> '',
? ? ? ?'msg' ? ? => '',
? ? ? ?'tip' ? ? => '',
? ? ? ?'ok' ? ? ?=> '',
? ? ? ?'extend' ?=> '',
? ?],
];
~~~
添加了以上信息后,我們在`后臺管理`\->`插件管理`可以看到插件已經多出來一個`配置`按鈕,如圖:

點擊`配置`按鈕會彈窗,其中`__tips__`的配置值用于頭部的提示,如圖:

## 參數說明
| ?名稱 | 類型 ? | 說明 |
| --- | --- | --- |
| name ? | string? | 配置名稱,配置的唯一標識,僅支持英文、數字、下劃線 |
| title ? | string? | 配置標題,用于顯示在插件配置中的值 |
| type | string | 類型,可用值:string/text/array/date/time/datetimenumber/checkbox/radio/select/selects/image/images/file/files/bool |
| group | string | 分組名稱,僅1.3.3+版本支持,不希望分組請設置為空 |
| visible | string | 動態可見條件,僅1.3.3+版本支持 |
| content | array | 內容,當`type`為`checkbox/radio/select/selects`值時的配置項 |
| value | mixed | 配置值,用戶輸入或選擇的值 |
| rule | string | 前端驗證規則,規則可以參考:https://validator.niceue.com/docs/core-rules.html |
| msg | string | 驗證失敗的提示消息 |
| tip | string | 驗證獲得焦點時的提示消息 |
| extend | string | 擴展配置信息,用于對`input`文本框進行擴展額外的屬性 |
插件配置會根據配置中的`type`值自動渲染相應的組件
| 類型 ? | 組件 ? |
| --- | --- |
| string ? | 普通文本框 ? |
| password ? | 密碼文本框 ? |
| ?text | ?多行文本框 |
| ?array | fieldlist列表框 ? |
| ?date | 日期框 ? |
| ?datetime | ?日期時間框 |
| ?time | 時間框 ? |
| ?number | 數字文本框 ? |
| ?checkbox | 多選框 ? |
| ?radio | 單選框 ? |
| ?select | 普通下拉列表框 ? |
| ?selects | 普通下拉列表框(多選) ? |
| ?image | 單圖 ? |
| ?images | 多圖 ? |
| ?file | 單文件上傳 ? |
| ?files | 多文件上傳 ? |
| ?bool | 開關 ? |
## 特殊配置
在我們的插件配置中,`name`為`__tips__`的項為特殊配置項,如圖:
~~~sql
[
'name' ? ?=> '__tips__',
'title' ? => '溫馨提示',
'type' ? ?=> 'string',
'content' => [],
'value' ? => '該提示將出現的插件配置頭部,通常用于提示和說明',
'rule' ? ?=> '',
'msg' ? ? => '',
'tip' ? ? => '',
'ok' ? ? ?=> '',
'extend' ?=> '',
]
~~~
以上配置在頁面會渲染成

其中顯示的文字內容會使用`value`配置的值,`value`支持HTML代碼。
## 使用配置
通過以上的配置,已完成插件的相關配置,如果需要讀取插件配置,我們可以在服務端使用以下代碼來讀取
~~~bash
$config = get_addon_config('插件標識');
~~~
此時`$config`讀取出來是一個鍵值數組,我們可以直接使用即可。
如果我們需要讀取插件的完整配置二級數組信息,可以使用以下代碼來讀取
~~~bash
$fullconfig = get_addon_fullconfig('插件標識');
~~~
## 更新配置
在`FastAdmin`插件系統中還提供有以下兩個函數用于寫入插件配置
~~~scss
set_addon_config('插件標識', 配置數組, 是否寫入文件);
set_addon_fullconfig('插件標識', 配置數組); //此函數將強制寫入配置文件
~~~
其中`set_addon_config`可做臨時更新插件配置使用,第三個參數用于控制是否將配置寫入文件,默認為`true`表示寫入配置,而`set_addon_fullconfig`函數將強制將配置寫入文件。
## 自定義配置頁面
我們可以在插件目錄下創建一個`config.html`,這個視圖模板文件將用于渲染用戶點擊`配置`按鈕彈出的視圖,默認不存在該文件則采用自帶的配置視圖模板。
我們可以參考`application/admin/view/addon/config.html`的視圖模板來復制到`插件目錄/config.html`中來個性化我們的配置展示。
如果我們需要在菜單欄跳轉到這個配置頁面,我們可以自行創建一個控制器來實現加載我們個性化的視圖模板,然后在菜單規則中創建一條記錄。