Admin.php 7.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226
  1. <?php
  2. // +----------------------------------------------------------------------
  3. // | 海豚PHP框架 [ DolphinPHP ]
  4. // +----------------------------------------------------------------------
  5. // | 版权所有 2016~2019 广东卓锐软件有限公司 [ http://www.zrthink.com ]
  6. // +----------------------------------------------------------------------
  7. // | 官方网站: http://dolphinphp.com
  8. // +----------------------------------------------------------------------
  9. namespace plugins\HelloWorld\controller;
  10. use app\common\builder\ZBuilder;
  11. use app\common\controller\Common;
  12. use plugins\HelloWorld\model\HelloWorld;
  13. use plugins\HelloWorld\validate\HelloWorld as HelloWorldValidate;
  14. /**
  15. * 插件后台管理控制器
  16. * @package plugins\HelloWorld\controller
  17. */
  18. class Admin extends Common
  19. {
  20. /**
  21. * 插件管理页
  22. * @author 蔡伟明 <314013107@qq.com>
  23. * @return mixed
  24. * @throws \think\Exception
  25. * @throws \think\exception\DbException
  26. */
  27. public function index()
  28. {
  29. // 查询条件
  30. $map = $this->getMap();
  31. $data_list = HelloWorld::where($map)->order('id desc')->paginate();
  32. // 分页数据
  33. $page = $data_list->render();
  34. // 自定义按钮
  35. $btnOne = [
  36. 'title' => '自定义按钮1',
  37. 'icon' => 'fa fa-list',
  38. 'href' => plugin_url('HelloWorld/Admin/testTable'),
  39. 'target' => '_blank',
  40. ];
  41. $btnTwo = [
  42. 'title' => '自定义按钮2',
  43. 'icon' => 'fa fa-user',
  44. 'href' => plugin_url('HelloWorld/Admin/testForm', ['name' => 'molly', 'age' => 12]),
  45. ];
  46. $btnThree = [
  47. 'title' => '自定义页面',
  48. 'icon' => 'fa fa-file',
  49. 'href' => plugin_url('HelloWorld/Admin/testPage'),
  50. ];
  51. $btnBack['title'] = '返回插件列表';
  52. $btnBack['icon'] = 'fa fa-reply';
  53. $btnBack['href'] = url('plugin/index');
  54. $btnBack['class'] = 'btn btn-warning';
  55. // 用TableBuilder渲染模板
  56. return ZBuilder::make('table')
  57. ->setPageTitle('数据列表')
  58. ->setSearch(['id' => 'ID', 'said' => '名言', 'name' => '出处'])
  59. ->addColumn('id', 'ID')
  60. ->addColumns([
  61. ['said', '名言'],
  62. ['name', '出处'],
  63. ['status', '状态', 'switch'],
  64. ['right_button', '操作', 'btn']
  65. ])
  66. ->addTopButton('custom', $btnBack)
  67. ->addTopButton('add', ['plugin_name' => 'HelloWorld'])
  68. ->addTopButtons('enable,disable,delete')
  69. ->addTopButton('custom', $btnOne)
  70. ->addTopButton('custom', $btnTwo)
  71. ->addTopButton('custom', $btnThree)
  72. ->addRightButton('edit', ['plugin_name' => 'HelloWorld'])
  73. ->addRightButtons('enable,disable,delete')
  74. ->addRightButton('custom', $btnOne)
  75. ->addRightButton('custom', $btnTwo)
  76. ->addRightButton('custom', $btnThree)
  77. ->setTableName('plugin_hello')
  78. ->setRowList($data_list)
  79. ->setPages($page)
  80. ->fetch();
  81. }
  82. /**
  83. * 新增
  84. * @author 蔡伟明 <314013107@qq.com>
  85. */
  86. public function add()
  87. {
  88. if ($this->request->isPost()) {
  89. $data = $this->request->post();
  90. // 验证数据
  91. $result = $this->validate($data, [
  92. 'name|出处' => 'require',
  93. 'said|名言' => 'require',
  94. ]);
  95. if(true !== $result){
  96. // 验证失败 输出错误信息
  97. $this->error($result);
  98. }
  99. // 插入数据
  100. if (HelloWorld::create($data)) {
  101. $this->success('新增成功', cookie('__forward__'));
  102. } else {
  103. $this->error('新增失败');
  104. }
  105. }
  106. // 使用ZBuilder快速创建表单
  107. return ZBuilder::make('form')
  108. ->setPageTitle('新增')
  109. ->addFormItem('text', 'name', '出处')
  110. ->addFormItem('text', 'said', '名言')
  111. ->fetch();
  112. }
  113. /**
  114. * 编辑
  115. * @author 蔡伟明 <314013107@qq.com>
  116. */
  117. public function edit()
  118. {
  119. if ($this->request->isPost()) {
  120. $data = $this->request->post();
  121. // 使用自定义的验证器验证数据
  122. $validate = new HelloWorldValidate();
  123. if (!$validate->check($data)) {
  124. // 验证失败 输出错误信息
  125. $this->error($validate->getError());
  126. }
  127. // 更新数据
  128. if (HelloWorld::update($data)) {
  129. $this->success('编辑成功', cookie('__forward__'));
  130. } else {
  131. $this->error('编辑失败');
  132. }
  133. }
  134. $id = input('param.id');
  135. // 获取数据
  136. $info = HelloWorld::get($id);
  137. // 使用ZBuilder快速创建表单
  138. return ZBuilder::make('form')
  139. ->setPageTitle('编辑')
  140. ->addFormItem('hidden', 'id')
  141. ->addFormItem('text', 'name', '出处')
  142. ->addFormItem('text', 'said', '名言')
  143. ->setFormData($info)
  144. ->fetch();
  145. }
  146. /**
  147. * 插件自定义方法
  148. * @author 蔡伟明 <314013107@qq.com>
  149. * @return mixed
  150. * @throws \think\Exception
  151. */
  152. public function testTable()
  153. {
  154. // 使用ZBuilder快速创建表单
  155. return ZBuilder::make('table')
  156. ->setPageTitle('插件自定义方法(列表)')
  157. ->setSearch(['said' => '名言', 'name' => '出处'])
  158. ->addColumn('id', 'ID')
  159. ->addColumn('said', '名言')
  160. ->addColumn('name', '出处')
  161. ->addColumn('status', '状态', 'switch')
  162. ->addColumn('right_button', '操作', 'btn')
  163. ->setTableName('plugin_hello')
  164. ->fetch();
  165. }
  166. /**
  167. * 插件自定义方法
  168. * 这里的参数是根据插件定义的按钮链接按顺序设置
  169. * @param string $id
  170. * @param string $table
  171. * @param string $name
  172. * @param string $age
  173. * @author 蔡伟明 <314013107@qq.com>
  174. * @return mixed
  175. * @throws \think\Exception
  176. */
  177. public function testForm($id = '', $table = '', $name = '', $age = '')
  178. {
  179. if ($this->request->isPost()) {
  180. $data = $this->request->post();
  181. halt($data);
  182. }
  183. // 使用ZBuilder快速创建表单
  184. return ZBuilder::make('form')
  185. ->setPageTitle('插件自定义方法(表单)')
  186. ->addFormItem('text', 'name', '出处')
  187. ->addFormItem('text', 'said', '名言')
  188. ->fetch();
  189. }
  190. /**
  191. * 自定义页面
  192. * @author 蔡伟明 <314013107@qq.com>
  193. * @return mixed
  194. */
  195. public function testPage()
  196. {
  197. // 1.使用默认的方法渲染模板,必须指定完整的模板文件名(包括模板后缀)
  198. // return $this->fetch(config('plugin_path'). 'HelloWorld/view/index.html');
  199. // 2.使用已封装好的快捷方法,该方法只用于加载插件模板
  200. // 如果不指定模板名称,则自动加载插件view目录下与当前方法名一致的模板
  201. return $this->pluginView();
  202. // return $this->pluginView('index'); // 指定模板名称
  203. // return $this->pluginView('', 'tpl'); // 指定模板后缀
  204. }
  205. }