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'); // 指定模板后缀
 | ||
|     }
 | ||
| }
 | 
