218 lines
6.9 KiB
PHP
218 lines
6.9 KiB
PHP
<?php
|
||
namespace plugins\HelloWorld\controller;
|
||
|
||
use app\common\builder\ZBuilder;
|
||
use app\common\controller\Common;
|
||
use plugins\HelloWorld\model\HelloWorld;
|
||
use plugins\HelloWorld\validate\HelloWorld as HelloWorldValidate;
|
||
|
||
/**
|
||
* 插件后台管理控制器
|
||
* @package plugins\HelloWorld\controller
|
||
*/
|
||
class Admin extends Common
|
||
{
|
||
/**
|
||
* 插件管理页
|
||
* @author 蔡伟明 <314013107@qq.com>
|
||
* @return mixed
|
||
* @throws \think\Exception
|
||
* @throws \think\exception\DbException
|
||
*/
|
||
public function index()
|
||
{
|
||
// 查询条件
|
||
$map = $this->getMap();
|
||
|
||
$data_list = HelloWorld::where($map)->order('id desc')->paginate();
|
||
// 分页数据
|
||
$page = $data_list->render();
|
||
|
||
// 自定义按钮
|
||
$btnOne = [
|
||
'title' => '自定义按钮1',
|
||
'icon' => 'fa fa-list',
|
||
'href' => plugin_url('HelloWorld/Admin/testTable'),
|
||
'target' => '_blank',
|
||
];
|
||
$btnTwo = [
|
||
'title' => '自定义按钮2',
|
||
'icon' => 'fa fa-user',
|
||
'href' => plugin_url('HelloWorld/Admin/testForm', ['name' => 'molly', 'age' => 12]),
|
||
];
|
||
$btnThree = [
|
||
'title' => '自定义页面',
|
||
'icon' => 'fa fa-file',
|
||
'href' => plugin_url('HelloWorld/Admin/testPage'),
|
||
];
|
||
$btnBack['title'] = '返回插件列表';
|
||
$btnBack['icon'] = 'fa fa-reply';
|
||
$btnBack['href'] = url('plugin/index');
|
||
$btnBack['class'] = 'btn btn-warning';
|
||
|
||
// 用TableBuilder渲染模板
|
||
return ZBuilder::make('table')
|
||
->setPageTitle('数据列表')
|
||
->setSearch(['id' => 'ID', 'said' => '名言', 'name' => '出处'])
|
||
->addColumn('id', 'ID')
|
||
->addColumns([
|
||
['said', '名言'],
|
||
['name', '出处'],
|
||
['status', '状态', 'switch'],
|
||
['right_button', '操作', 'btn']
|
||
])
|
||
->addTopButton('custom', $btnBack)
|
||
->addTopButton('add', ['plugin_name' => 'HelloWorld'])
|
||
->addTopButtons('enable,disable,delete')
|
||
->addTopButton('custom', $btnOne)
|
||
->addTopButton('custom', $btnTwo)
|
||
->addTopButton('custom', $btnThree)
|
||
->addRightButton('edit', ['plugin_name' => 'HelloWorld'])
|
||
->addRightButtons('enable,disable,delete')
|
||
->addRightButton('custom', $btnOne)
|
||
->addRightButton('custom', $btnTwo)
|
||
->addRightButton('custom', $btnThree)
|
||
->setTableName('plugin_hello')
|
||
->setRowList($data_list)
|
||
->setPages($page)
|
||
->fetch();
|
||
}
|
||
|
||
/**
|
||
* 新增
|
||
* @author 蔡伟明 <314013107@qq.com>
|
||
*/
|
||
public function add()
|
||
{
|
||
if ($this->request->isPost()) {
|
||
$data = $this->request->post();
|
||
// 验证数据
|
||
$result = $this->validate($data, [
|
||
'name|出处' => 'require',
|
||
'said|名言' => 'require',
|
||
]);
|
||
if(true !== $result){
|
||
// 验证失败 输出错误信息
|
||
$this->error($result);
|
||
}
|
||
|
||
// 插入数据
|
||
if (HelloWorld::create($data)) {
|
||
$this->success('新增成功', cookie('__forward__'));
|
||
} else {
|
||
$this->error('新增失败');
|
||
}
|
||
}
|
||
|
||
// 使用ZBuilder快速创建表单
|
||
return ZBuilder::make('form')
|
||
->setPageTitle('新增')
|
||
->addFormItem('text', 'name', '出处')
|
||
->addFormItem('text', 'said', '名言')
|
||
->fetch();
|
||
}
|
||
|
||
/**
|
||
* 编辑
|
||
* @author 蔡伟明 <314013107@qq.com>
|
||
*/
|
||
public function edit()
|
||
{
|
||
if ($this->request->isPost()) {
|
||
$data = $this->request->post();
|
||
|
||
// 使用自定义的验证器验证数据
|
||
$validate = new HelloWorldValidate();
|
||
if (!$validate->check($data)) {
|
||
// 验证失败 输出错误信息
|
||
$this->error($validate->getError());
|
||
}
|
||
|
||
// 更新数据
|
||
if (HelloWorld::update($data)) {
|
||
$this->success('编辑成功', cookie('__forward__'));
|
||
} else {
|
||
$this->error('编辑失败');
|
||
}
|
||
}
|
||
|
||
$id = input('param.id');
|
||
|
||
// 获取数据
|
||
$info = HelloWorld::get($id);
|
||
|
||
// 使用ZBuilder快速创建表单
|
||
return ZBuilder::make('form')
|
||
->setPageTitle('编辑')
|
||
->addFormItem('hidden', 'id')
|
||
->addFormItem('text', 'name', '出处')
|
||
->addFormItem('text', 'said', '名言')
|
||
->setFormData($info)
|
||
->fetch();
|
||
}
|
||
|
||
/**
|
||
* 插件自定义方法
|
||
* @author 蔡伟明 <314013107@qq.com>
|
||
* @return mixed
|
||
* @throws \think\Exception
|
||
*/
|
||
public function testTable()
|
||
{
|
||
// 使用ZBuilder快速创建表单
|
||
return ZBuilder::make('table')
|
||
->setPageTitle('插件自定义方法(列表)')
|
||
->setSearch(['said' => '名言', 'name' => '出处'])
|
||
->addColumn('id', 'ID')
|
||
->addColumn('said', '名言')
|
||
->addColumn('name', '出处')
|
||
->addColumn('status', '状态', 'switch')
|
||
->addColumn('right_button', '操作', 'btn')
|
||
->setTableName('plugin_hello')
|
||
->fetch();
|
||
}
|
||
|
||
/**
|
||
* 插件自定义方法
|
||
* 这里的参数是根据插件定义的按钮链接按顺序设置
|
||
* @param string $id
|
||
* @param string $table
|
||
* @param string $name
|
||
* @param string $age
|
||
* @author 蔡伟明 <314013107@qq.com>
|
||
* @return mixed
|
||
* @throws \think\Exception
|
||
*/
|
||
public function testForm($id = '', $table = '', $name = '', $age = '')
|
||
{
|
||
if ($this->request->isPost()) {
|
||
$data = $this->request->post();
|
||
halt($data);
|
||
}
|
||
|
||
// 使用ZBuilder快速创建表单
|
||
return ZBuilder::make('form')
|
||
->setPageTitle('插件自定义方法(表单)')
|
||
->addFormItem('text', 'name', '出处')
|
||
->addFormItem('text', 'said', '名言')
|
||
->fetch();
|
||
}
|
||
|
||
/**
|
||
* 自定义页面
|
||
* @author 蔡伟明 <314013107@qq.com>
|
||
* @return mixed
|
||
*/
|
||
public function testPage()
|
||
{
|
||
// 1.使用默认的方法渲染模板,必须指定完整的模板文件名(包括模板后缀)
|
||
// return $this->fetch(config('plugin_path'). 'HelloWorld/view/index.html');
|
||
|
||
// 2.使用已封装好的快捷方法,该方法只用于加载插件模板
|
||
// 如果不指定模板名称,则自动加载插件view目录下与当前方法名一致的模板
|
||
return $this->pluginView();
|
||
// return $this->pluginView('index'); // 指定模板名称
|
||
// return $this->pluginView('', 'tpl'); // 指定模板后缀
|
||
}
|
||
}
|