| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185 |
- <?php
- namespace app\mall\admin;
- use app\admin\controller\Admin;
- use think\Db;
- use think\Request;
- use think\Validate;
- use app\common\builder\ZBuilder;
- class Productclass extends Admin
- {
- public function index()
- {
- $cates=Db::name('product_types')->order('sort asc')->select();
- $this->assign('cates', $this->get_tree_html($cates));
- $this->assign('product_class_level', config('mall.product_class_level'));
- $this->assign('page_title', db('admin_menu')->where('id','216')->value('title'));
- // 渲染模板输出
- return $this->fetch();
- }
- private function get_tree_html($arr,$pid='0'){
- global $tree;
- foreach($arr as $key=>$value) {
- if($value['parent_id'] == $pid) {
- $tree .= '<div class="dj_box" style="margin-left: '.(($value['level']-1)*2).'%;">'.$value['name'].' <a href="'.url('edit',['id'=>$value['id']]).'">编辑</a> <a href="'.url('add',['parent_id'=>$value['id']]).'">新增子分类</a></div>';
- $this->get_tree_html($arr , $value['id'] );
- }
- }
- return $tree;
- }
- public function add($parent_id='0'){
- //判断是否为post请求
- if (Request::instance()->isPost()) {
- $now=time();
- //获取请求的post数据
- $data=input('post.');
- //数据输入验证
- $validate = new Validate([
- 'parent_id|父级分类' => 'require',
- 'name|名称'=> 'require|length:1,10',
- 'home|推荐到首页' => 'require|in:0,1',
- 'nav|导航显示' => 'require|in:0,1',
- 'sort|排序' => 'require|regex:^[1-9]\d{0,9}$',
- ]);
- if (!$validate->check($data)) {
- return $this->error($validate->getError());
- }
- if($data['parent_id']>0){
- $level=db('product_types')->where('id',$data['parent_id'])->value('level');
- if($level>0){
- $level=$level+1;
- }else{
- return $this->error('父级分类不存在');
- }
- }else{
- $level='1';
- }
- //数据处理
- $insert=array();
- $insert['name']=$data['name'];
- $insert['parent_id']=$data['parent_id'];
- $insert['admin_attachment_id']=$data['admin_attachment_id'];
- $insert['home']=$data['home'];
- $insert['nav']=$data['nav'];
- $insert['alias']=$data['alias'];
- $insert['link']=$data['link'];
- $insert['sort']=$data['sort'];
- $insert['level']=$level;
- $insert['created_at']=$now;
- $insert['updated_at']=$now;
- //数据更新
- $insert_id=Db::name("product_types")->insertGetId($insert);
- //跳转
- if($insert_id>0){
- return $this->success('新增成功',url('index'));
- } else {
- return $this->error('新增失败');
- }
- }
-
- $cates=Db::name('product_types')->field('id,parent_id,level,name')->order('sort asc')->select();
- $cates=get_tree_ids($cates);
- $cate_selects=['0'=>'顶级分类'];
- foreach ($cates as $key => $value) {
- $cate_selects[$key]=$value;
- }
- // 使用ZBuilder快速创建表单
- return ZBuilder::make('form')
- ->setPageTitle('新增商品分类') // 设置页面标题
- ->setPageTips('请认真编辑相关信息') // 设置页面提示信息
- ->setBtnTitle('submit', '确定') //修改默认按钮标题
- ->addBtn('<button type="reset" class="btn btn-default">重置</button>') //添加额外按钮
- ->addSelect('parent_id', '父级分类','必选',$cate_selects,$parent_id)
- ->addText('name', '名称','必填,限制在10个字以内')
- ->addImage('admin_attachment_id', '图标','')
- ->addText('alias', '描述','')
- ->addText('link', '跳转地址','请以http://或https://开头')
- ->addRadio('home', '推荐到首页', '必选', ['0' => '否','1' => '是'],'0')
- ->addRadio('nav', '作为导航', '必选', ['0' => '否','1' => '是'],'0')
- ->addText('sort', '排序','必填,请输入一个大于0的整数,前台以此升序取出数据','100')
- //->isAjax(false) //默认为ajax的post提交
- ->fetch();
- }
- public function edit($id=''){
- //判断是否为post请求
- if (Request::instance()->isPost()) {
- $now=time();
- //获取请求的post数据
- $data=input('post.');
- //数据输入验证
- $validate = new Validate([
- 'name|名称'=> 'require|length:1,10',
- 'home|推荐到首页' => 'require|in:0,1',
- 'nav|导航显示' => 'require|in:0,1',
- 'sort|排序' => 'require|regex:^[1-9]\d{0,9}$',
- ]);
- if (!$validate->check($data)) {
- return $this->error($validate->getError());
- }
- $product_type=Db::name("product_types")->where('id',$data['id'])->find();
- if($product_type['parent_id']>0){
- $level=db('product_types')->where('id',$data['parent_id'])->value('level');
- if($level>0){
- $level=$level+1;
- }else{
- return $this->error('父级分类不存在');
- }
- }else{
- $level='1';
- }
- //数据处理
- $update=array();
- $update['id']=$data['id'];
- $update['name']=$data['name'];
- $update['admin_attachment_id']=$data['admin_attachment_id'];
- $update['home']=$data['home'];
- $update['nav']=$data['nav'];
- $update['alias']=$data['alias'];
- $update['link']=$data['link'];
- $update['sort']=$data['sort'];
- $update['level']=$level;
- $update['updated_at']=$now;
- //数据更新
- $rt=Db::name("product_types")->update($update);
- //跳转
- if($rt!==false){
- return $this->success('编辑成功',url('index'));
- } else {
- return $this->error('编辑失败');
- }
- }
- // 接收id
- if ($id>0) {
- // 查处数据
- $product_type=Db::name("product_types")->where('id',$id)->find();
- if(!$product_type){
- return $this->error('请求错误');
- }
- $cates=Db::name('product_types')->field('id,parent_id,level,name')->order('sort asc')->select();
- $cates=get_tree_ids($cates);
- $cate_selects=['0'=>'顶级分类'];
- foreach ($cates as $key => $value) {
- $cate_selects[$key]=$value;
- }
- // 使用ZBuilder快速创建表单
- return ZBuilder::make('form')
- ->setPageTitle('编辑商品分类') // 设置页面标题
- ->setPageTips('请认真编辑相关信息') // 设置页面提示信息
- ->setBtnTitle('submit', '确定') //修改默认按钮标题
- ->addBtn('<button type="reset" class="btn btn-default">重置</button>') //添加额外按钮
- ->addText('name', '名称','必填,限制在10个字以内',$product_type['name'])
- ->addImage('admin_attachment_id', '图标','',$product_type['admin_attachment_id'])
- ->addText('alias', '描述','',$product_type['alias'])
- ->addText('link', '跳转地址','请以http://或https://开头',$product_type['link'])
- ->addRadio('home', '推荐到首页', '必选', ['0' => '否','1' => '是'],$product_type['home'])
- ->addRadio('nav', '作为导航', '必选', ['0' => '否','1' => '是'],$product_type['nav'])
- ->addText('sort', '排序','必填,请输入一个大于0的整数,前台以此升序取出数据',$product_type['sort'])
- ->addHidden('id',$product_type['id'])
- //->isAjax(false) //默认为ajax的post提交
- ->fetch();
- }
- }
- }
|