構建器在插件中的應用和在模塊中的應用是一樣的。
要注意的是:
1.插件的后臺控制器要繼承```use app\home\admin\Plugin```
2.定義插件的名稱。(名稱、插件目錄名、info.json中的name要保持一致)
如:
```
<?php
// 構建器Builder列表示例-后臺
// +----------------------------------------------------------------------
// | Copyright (c) 2016-2018 https://www.eacoophp.com, All rights reserved.
// +----------------------------------------------------------------------
// | [EacooPHP] 并不是自由軟件,可免費使用,未經許可不能去掉EacooPHP相關版權。
// | 禁止在EacooPHP整體或任何部分基礎上發展任何派生、修改或第三方版本用于重新分發
// +----------------------------------------------------------------------
// | Author: 心云間、凝聽 <981248356@qq.com>
// +----------------------------------------------------------------------
namespace plugins\DemoExample\admin;
use app\home\admin\Plugin;//一定要繼承該類
use plugins\DemoExample\model\DemoExample as DemoExampleModel;
class BuilderList extends Plugin{
protected $plugin_name = 'DemoExample';//定義插件名稱
function _initialize()
{
parent::_initialize();
$this->demoExampleModel = new DemoExampleModel();
}
/**
* 用戶列表(構建器列表,該方法是以獲取用戶列表來舉例)
* @return [type] [description]
* @date 2018-02-23
* @author 心云間、凝聽 <981248356@qq.com>
*/
public function index(){
return Iframe()
->setMetaTitle('DemoExample列表示例') // 設置頁面標題
->search([
['name'=>'status','type'=>'select','title'=>'狀態','options'=>[1=>'正常',2=>'待審核']],
['name'=>'sex','type'=>'select','title'=>'性別','options'=>[0=>'保密',1=>'男',2=>'女']],
['name'=>'create_time_range','type'=>'daterange','extra_attr'=>'placeholder="創建時間范圍"'],
['name'=>'keyword','type'=>'text','extra_attr'=>'placeholder="請輸入查詢關鍵字"'],
])
->content($this->grid());
}
/**
* 構建器列表
* @return [type] [description]
* @date 2018-09-08
* @author 心云間、凝聽 <981248356@qq.com>
*/
public function grid()
{
$search_setting = $this->buildModelSearchSetting();
// 獲取構建器列表數據
$map = [
'status'=>['egt',0],// 禁用和正常狀態
];
list($data_list,$total) = $this->demoExampleModel->search($search_setting)->getListByPage($map,true,'create_time desc');
$tab_list = [
'builderlist'=>['title'=>'列表示例','href'=>plugin_url('DemoExample/BuilderList/index')],
'builderform'=>['title'=>'表單示例','href'=>plugin_url('DemoExample/BuilderForm/index')],
];
return builder('List')
->setTabNav($tab_list, 'builderlist') // 設置頁面Tab導航
->addTopButton('addnew') // 添加新增按鈕
->addTopButton('resume') // 添加啟用按鈕
->addTopButton('forbid') // 添加禁用按鈕
->addTopButton('delete',['model'=>'DemoExample']) // 添加刪除按鈕
//->setSearch('custom','請輸入關鍵字')
->keyListItem('id', 'ID')
->keyListItem('picture', '圖像', 'picture')
->keyListItem('title', '標題')
->keyListItem('email', '郵箱')
->keyListItem('sex', '性別','array',[0=>'保密',1=>'男',2=>'女'])
->keyListItem('file', '文件')
->keyListItem('create_time', '創建時間')
->keyListItem('status', '狀態', 'status')
->keyListItem('right_button', '操作', 'btn')
->setListPrimaryKey('id')//設置數據主鍵,默認是id
->setListData($data_list) // 數據列表
->setListPage($total) // 數據列表分頁
->addRightButton('edit',['href'=>plugin_url('DemoExample/BuilderForm/index',['id'=>'__data_id__'])])
->addRightButton('forbid')
//->addRightButton('delete') // 添加編輯按鈕
->fetch();
}
/**
* 編輯
* @return [type] [description]
* @date 2018-03-08
* @author 心云間、凝聽 <981248356@qq.com>
*/
public function edit()
{
$form = new BuilderForm();
return $form->index();
}
/**
* 構建模型搜索查詢條件
* @return [type] [description]
* @date 2018-09-30
* @author 心云間、凝聽 <981248356@qq.com>
*/
private function buildModelSearchSetting()
{
//時間范圍
$timegap = input('create_time_range');
$extend_conditions = [];
if($timegap){
$gap = explode('—', $timegap);
$reg_begin = $gap[0];
$reg_end = $gap[1];
$extend_conditions =[
'create_time'=>['between',[$reg_begin.' 00:00:00',$reg_end.' 23:59:59']]
];
}
//自定義查詢條件
$search_setting = [
'keyword_condition'=>'title',
//忽略數據庫不存在的字段
'ignore_keys' => ['create_time_range'],
//擴展的查詢條件
'extend_conditions'=>$extend_conditions
];
return $search_setting;
}
}
```
- 前言
- 基礎
- 安裝
- 規范
- 數據庫設計
- 命名規范
- 建議參考
- 架構
- 架構總覽
- 目錄結構
- 生命周期
- 入口文件
- 模塊設計
- 插件設計
- 主題設計
- API設計
- 容器和依賴注入
- 驗證器設計
- 鉤子和行為設計
- 介紹
- 后臺介紹
- 儀表盤
- 系統設置
- 系統設置
- 網站設置
- 前臺導航菜單
- 后臺導航菜單
- 配置管理
- 用戶管理
- 權限管理
- 角色組
- 節點管理
- 附件管理
- 工具
- 擴展中心
- 模塊
- 插件
- 主題
- 前臺介紹
- API接口
- 模型層
- 定義
- 邏輯層
- 定義
- 邏輯初始化
- 服務層
- 定義
- 二次開發
- 模塊開發
- 介紹
- 1.結構目錄
- 2.install安裝目錄文件
- info.json
- options.php
- menus.php
- unstall.sql
- install.sql
- 3.安裝模塊
- 模塊函數與全局函數
- 其他
- 插件開發
- 介紹
- 定義入口文件
- 1.結構目錄
- 2.install安裝目錄文件
- info.json
- options.php
- menus.php
- install.sql
- unstall.sql
- 3.實現鉤子方法
- 4.安裝插件
- 開發使用
- 插件控制器Controller
- 插件模型Model
- 插件邏輯層Logic
- 開發總結
- 主題開發
- 介紹
- 結構目錄
- install安裝目錄
- info.json
- 主題變量
- 模塊主題化
- 插件主題化
- CSS、JS靜態資源引入
- 創建模版文件
- API開發
- 通用組件
- wangeditor編輯器
- 上傳
- 實戰開發
- 控制器
- 驗證器
- 接口
- 創建自定義模版
- 數據庫操作
- 通過接口上傳文件
- 構建器Builder(重要)
- 表單Form
- 設置頁面標題
- 表單項(調用方式)
- 文本框text
- 隱藏域hidden
- 文本區textarea
- 時間選擇器datetime
- 圖片選擇器picture
- 多圖片選擇器pictures
- 圖片上傳image
- 文件上傳file
- wang編輯器wangeditor
- 百度富文本編輯器ueditor
- 選擇項
- 添加標簽欄Tab
- 自定義頭部工具欄
- 表單提交處理
- 列表List
- 設置頁面標題
- 添加標簽欄Tab
- 高級查詢
- 查詢構造器
- 添加列表搜索功能
- 添加批量操作
- 自定義頭部工具
- 頂部新增按鈕
- 頂部批量啟用
- 頂部批量禁用
- 排序Sort
- 表單驗證
- 插件-Builder構建器
- 命令行
- 配置
- 擴展專題
- 輕松識別客戶端信息User Agent
- 字符串
- 數組
- 鉤子、插件、模塊相關方法
- 時間
- 請求(request)
- 附件
- 用戶信息
- 前臺用戶
- 后臺用戶
- 微信(wechat模塊)
- 專題
- 插件專題
- 微信支付
- 支付寶(即時到賬)
- 微信小程序專題
- 微信模塊
- 日志
- 后臺行為日志
- 框架日志
- 自定義日志
- 常見問題集
- 附錄
- 配置參考
- 常量參考
- 變量參考
- 更新日志
- 升級指導
- 關于
- 進階
- 分布式數據庫
- 分布式緩存
- 負載均衡
- Redis
- 分庫分表