Slider.php 6.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202
  1. <?php
  2. // +----------------------------------------------------------------------
  3. // | 海豚PHP框架 [ DolphinPHP ]
  4. // +----------------------------------------------------------------------
  5. // | 版权所有 2016~2017 河源市卓锐科技有限公司 [ http://www.zrthink.com ]
  6. // +----------------------------------------------------------------------
  7. // | 官方网站: http://dolphinphp.com
  8. // +----------------------------------------------------------------------
  9. // | 开源协议 ( http://www.apache.org/licenses/LICENSE-2.0 )
  10. // +----------------------------------------------------------------------
  11. namespace app\cms\admin;
  12. use app\admin\controller\Admin;
  13. use app\common\builder\ZBuilder;
  14. use app\cms\model\Slider as SliderModel;
  15. /**
  16. * 滚动图片控制器
  17. * @package app\cms\admin
  18. */
  19. class Slider extends Admin
  20. {
  21. /**
  22. * 滚动图片列表
  23. * @author 蔡伟明 <314013107@qq.com>
  24. * @return mixed
  25. */
  26. public function index()
  27. {
  28. // 查询
  29. $map = $this->getMap();
  30. // 排序
  31. $order = $this->getOrder();
  32. // 数据列表
  33. $data_list = SliderModel::where($map)->order($order)->paginate();
  34. // 使用ZBuilder快速创建数据表格
  35. return ZBuilder::make('table')
  36. ->setSearch(['title' => '标题']) // 设置搜索框
  37. ->addColumns([ // 批量添加数据列
  38. ['id', 'ID'],
  39. ['cover', '图片', 'picture'],
  40. ['title', '标题', 'text.edit'],
  41. ['url', '链接', 'text.edit'],
  42. ['create_time', '创建时间', 'datetime'],
  43. ['sort', '排序', 'text.edit'],
  44. ['status', '状态', 'switch'],
  45. ['right_button', '操作', 'btn']
  46. ])
  47. ->addTopButtons('add,enable,disable,delete') // 批量添加顶部按钮
  48. ->addRightButtons(['edit', 'delete' => ['data-tips' => '删除后无法恢复。']]) // 批量添加右侧按钮
  49. ->addOrder('id,title,create_time')
  50. ->setRowList($data_list) // 设置表格数据
  51. ->addValidate('Slider', 'title,url')
  52. ->fetch(); // 渲染模板
  53. }
  54. /**
  55. * 新增
  56. * @author 蔡伟明 <314013107@qq.com>
  57. * @return mixed
  58. */
  59. public function add()
  60. {
  61. // 保存数据
  62. if ($this->request->isPost()) {
  63. // 表单数据
  64. $data = $this->request->post();
  65. // 验证
  66. $result = $this->validate($data, 'Slider');
  67. if(true !== $result) $this->error($result);
  68. if ($slider = SliderModel::create($data)) {
  69. // 记录行为
  70. action_log('slider_add', 'cms_slider', $slider['id'], UID, $data['title']);
  71. $this->success('新增成功', 'index');
  72. } else {
  73. $this->error('新增失败');
  74. }
  75. }
  76. // 显示添加页面
  77. return ZBuilder::make('form')
  78. ->addFormItems([
  79. ['text', 'title', '标题'],
  80. ['image', 'cover', '图片'],
  81. ['text', 'url', '链接'],
  82. ['text', 'sort', '排序', '', 100],
  83. ['radio', 'status', '立即启用', '', ['否', '是'], 1]
  84. ])
  85. ->fetch();
  86. }
  87. /**
  88. * 编辑
  89. * @param null $id 滚动图片id
  90. * @author 蔡伟明 <314013107@qq.com>
  91. * @return mixed
  92. */
  93. public function edit($id = null)
  94. {
  95. if ($id === null) $this->error('缺少参数');
  96. // 保存数据
  97. if ($this->request->isPost()) {
  98. // 表单数据
  99. $data = $this->request->post();
  100. // 验证
  101. $result = $this->validate($data, 'Slider');
  102. if(true !== $result) $this->error($result);
  103. if (SliderModel::update($data)) {
  104. // 记录行为
  105. action_log('slider_add', 'cms_slider', $id, UID, $data['title']);
  106. $this->success('编辑成功', 'index');
  107. } else {
  108. $this->error('编辑失败');
  109. }
  110. }
  111. $info = SliderModel::get($id);
  112. // 显示编辑页面
  113. return ZBuilder::make('form')
  114. ->addFormItems([
  115. ['hidden', 'id'],
  116. ['text', 'title', '标题'],
  117. ['image', 'cover', '图片'],
  118. ['text', 'url', '链接'],
  119. ['text', 'sort', '排序'],
  120. ['radio', 'status', '立即启用', '', ['否', '是']]
  121. ])
  122. ->setFormData($info)
  123. ->fetch();
  124. }
  125. /**
  126. * 删除单页
  127. * @param array $record 行为日志
  128. * @author 蔡伟明 <314013107@qq.com>
  129. * @return mixed
  130. */
  131. public function delete($record = [])
  132. {
  133. return $this->setStatus('delete');
  134. }
  135. /**
  136. * 启用单页
  137. * @param array $record 行为日志
  138. * @author 蔡伟明 <314013107@qq.com>
  139. * @return mixed
  140. */
  141. public function enable($record = [])
  142. {
  143. return $this->setStatus('enable');
  144. }
  145. /**
  146. * 禁用单页
  147. * @param array $record 行为日志
  148. * @author 蔡伟明 <314013107@qq.com>
  149. * @return mixed
  150. */
  151. public function disable($record = [])
  152. {
  153. return $this->setStatus('disable');
  154. }
  155. /**
  156. * 设置单页状态:删除、禁用、启用
  157. * @param string $type 类型:delete/enable/disable
  158. * @param array $record
  159. * @author 蔡伟明 <314013107@qq.com>
  160. * @return mixed
  161. */
  162. public function setStatus($type = '', $record = [])
  163. {
  164. $ids = $this->request->isPost() ? input('post.ids/a') : input('param.ids');
  165. $slider_title = SliderModel::where('id', 'in', $ids)->column('title');
  166. return parent::setStatus($type, ['slider_'.$type, 'cms_slider', 0, UID, implode('、', $slider_title)]);
  167. }
  168. /**
  169. * 快速编辑
  170. * @param array $record 行为日志
  171. * @author 蔡伟明 <314013107@qq.com>
  172. * @return mixed
  173. */
  174. public function quickEdit($record = [])
  175. {
  176. $id = input('post.pk', '');
  177. $field = input('post.name', '');
  178. $value = input('post.value', '');
  179. $slider = SliderModel::where('id', $id)->value($field);
  180. $details = '字段(' . $field . '),原值(' . $slider . '),新值:(' . $value . ')';
  181. return parent::quickEdit(['slider_edit', 'cms_slider', $id, UID, $details]);
  182. }
  183. }