Productclass.php 8.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185
  1. <?php
  2. namespace app\mall\admin;
  3. use app\admin\controller\Admin;
  4. use think\Db;
  5. use think\Request;
  6. use think\Validate;
  7. use app\common\builder\ZBuilder;
  8. class Productclass extends Admin
  9. {
  10. public function index()
  11. {
  12. $cates=Db::name('product_types')->order('sort asc')->select();
  13. $this->assign('cates', $this->get_tree_html($cates));
  14. $this->assign('product_class_level', config('mall.product_class_level'));
  15. $this->assign('page_title', db('admin_menu')->where('id','216')->value('title'));
  16. // 渲染模板输出
  17. return $this->fetch();
  18. }
  19. private function get_tree_html($arr,$pid='0'){
  20. global $tree;
  21. foreach($arr as $key=>$value) {
  22. if($value['parent_id'] == $pid) {
  23. $tree .= '<div class="dj_box" style="margin-left: '.(($value['level']-1)*2).'%;">'.$value['name'].'&nbsp;&nbsp;&nbsp;<a href="'.url('edit',['id'=>$value['id']]).'">编辑</a>&nbsp;<a href="'.url('add',['parent_id'=>$value['id']]).'">新增子分类</a></div>';
  24. $this->get_tree_html($arr , $value['id'] );
  25. }
  26. }
  27. return $tree;
  28. }
  29. public function add($parent_id='0'){
  30. //判断是否为post请求
  31. if (Request::instance()->isPost()) {
  32. $now=time();
  33. //获取请求的post数据
  34. $data=input('post.');
  35. //数据输入验证
  36. $validate = new Validate([
  37. 'parent_id|父级分类' => 'require',
  38. 'name|名称'=> 'require|length:1,10',
  39. 'home|推荐到首页' => 'require|in:0,1',
  40. 'nav|导航显示' => 'require|in:0,1',
  41. 'sort|排序' => 'require|regex:^[1-9]\d{0,9}$',
  42. ]);
  43. if (!$validate->check($data)) {
  44. return $this->error($validate->getError());
  45. }
  46. if($data['parent_id']>0){
  47. $level=db('product_types')->where('id',$data['parent_id'])->value('level');
  48. if($level>0){
  49. $level=$level+1;
  50. }else{
  51. return $this->error('父级分类不存在');
  52. }
  53. }else{
  54. $level='1';
  55. }
  56. //数据处理
  57. $insert=array();
  58. $insert['name']=$data['name'];
  59. $insert['parent_id']=$data['parent_id'];
  60. $insert['admin_attachment_id']=$data['admin_attachment_id'];
  61. $insert['home']=$data['home'];
  62. $insert['nav']=$data['nav'];
  63. $insert['alias']=$data['alias'];
  64. $insert['link']=$data['link'];
  65. $insert['sort']=$data['sort'];
  66. $insert['level']=$level;
  67. $insert['created_at']=$now;
  68. $insert['updated_at']=$now;
  69. //数据更新
  70. $insert_id=Db::name("product_types")->insertGetId($insert);
  71. //跳转
  72. if($insert_id>0){
  73. return $this->success('新增成功',url('index'));
  74. } else {
  75. return $this->error('新增失败');
  76. }
  77. }
  78. $cates=Db::name('product_types')->field('id,parent_id,level,name')->order('sort asc')->select();
  79. $cates=get_tree_ids($cates);
  80. $cate_selects=['0'=>'顶级分类'];
  81. foreach ($cates as $key => $value) {
  82. $cate_selects[$key]=$value;
  83. }
  84. // 使用ZBuilder快速创建表单
  85. return ZBuilder::make('form')
  86. ->setPageTitle('新增商品分类') // 设置页面标题
  87. ->setPageTips('请认真编辑相关信息') // 设置页面提示信息
  88. ->setBtnTitle('submit', '确定') //修改默认按钮标题
  89. ->addBtn('<button type="reset" class="btn btn-default">重置</button>') //添加额外按钮
  90. ->addSelect('parent_id', '父级分类','必选',$cate_selects,$parent_id)
  91. ->addText('name', '名称','必填,限制在10个字以内')
  92. ->addImage('admin_attachment_id', '图标','')
  93. ->addText('alias', '描述','')
  94. ->addText('link', '跳转地址','请以http://或https://开头')
  95. ->addRadio('home', '推荐到首页', '必选', ['0' => '否','1' => '是'],'0')
  96. ->addRadio('nav', '作为导航', '必选', ['0' => '否','1' => '是'],'0')
  97. ->addText('sort', '排序','必填,请输入一个大于0的整数,前台以此升序取出数据','100')
  98. //->isAjax(false) //默认为ajax的post提交
  99. ->fetch();
  100. }
  101. public function edit($id=''){
  102. //判断是否为post请求
  103. if (Request::instance()->isPost()) {
  104. $now=time();
  105. //获取请求的post数据
  106. $data=input('post.');
  107. //数据输入验证
  108. $validate = new Validate([
  109. 'name|名称'=> 'require|length:1,10',
  110. 'home|推荐到首页' => 'require|in:0,1',
  111. 'nav|导航显示' => 'require|in:0,1',
  112. 'sort|排序' => 'require|regex:^[1-9]\d{0,9}$',
  113. ]);
  114. if (!$validate->check($data)) {
  115. return $this->error($validate->getError());
  116. }
  117. $product_type=Db::name("product_types")->where('id',$data['id'])->find();
  118. if($product_type['parent_id']>0){
  119. $level=db('product_types')->where('id',$data['parent_id'])->value('level');
  120. if($level>0){
  121. $level=$level+1;
  122. }else{
  123. return $this->error('父级分类不存在');
  124. }
  125. }else{
  126. $level='1';
  127. }
  128. //数据处理
  129. $update=array();
  130. $update['id']=$data['id'];
  131. $update['name']=$data['name'];
  132. $update['admin_attachment_id']=$data['admin_attachment_id'];
  133. $update['home']=$data['home'];
  134. $update['nav']=$data['nav'];
  135. $update['alias']=$data['alias'];
  136. $update['link']=$data['link'];
  137. $update['sort']=$data['sort'];
  138. $update['level']=$level;
  139. $update['updated_at']=$now;
  140. //数据更新
  141. $rt=Db::name("product_types")->update($update);
  142. //跳转
  143. if($rt!==false){
  144. return $this->success('编辑成功',url('index'));
  145. } else {
  146. return $this->error('编辑失败');
  147. }
  148. }
  149. // 接收id
  150. if ($id>0) {
  151. // 查处数据
  152. $product_type=Db::name("product_types")->where('id',$id)->find();
  153. if(!$product_type){
  154. return $this->error('请求错误');
  155. }
  156. $cates=Db::name('product_types')->field('id,parent_id,level,name')->order('sort asc')->select();
  157. $cates=get_tree_ids($cates);
  158. $cate_selects=['0'=>'顶级分类'];
  159. foreach ($cates as $key => $value) {
  160. $cate_selects[$key]=$value;
  161. }
  162. // 使用ZBuilder快速创建表单
  163. return ZBuilder::make('form')
  164. ->setPageTitle('编辑商品分类') // 设置页面标题
  165. ->setPageTips('请认真编辑相关信息') // 设置页面提示信息
  166. ->setBtnTitle('submit', '确定') //修改默认按钮标题
  167. ->addBtn('<button type="reset" class="btn btn-default">重置</button>') //添加额外按钮
  168. ->addText('name', '名称','必填,限制在10个字以内',$product_type['name'])
  169. ->addImage('admin_attachment_id', '图标','',$product_type['admin_attachment_id'])
  170. ->addText('alias', '描述','',$product_type['alias'])
  171. ->addText('link', '跳转地址','请以http://或https://开头',$product_type['link'])
  172. ->addRadio('home', '推荐到首页', '必选', ['0' => '否','1' => '是'],$product_type['home'])
  173. ->addRadio('nav', '作为导航', '必选', ['0' => '否','1' => '是'],$product_type['nav'])
  174. ->addText('sort', '排序','必填,请输入一个大于0的整数,前台以此升序取出数据',$product_type['sort'])
  175. ->addHidden('id',$product_type['id'])
  176. //->isAjax(false) //默认为ajax的post提交
  177. ->fetch();
  178. }
  179. }
  180. }