构建器在插件中的应用和在模块中的应用是一样的。
要注意的是:
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
- 分库分表