zoukankan      html  css  js  c++  java
  • 夺命雷公狗ThinkPHP项目之----企业网站10之栏目的编辑完善(无限极分类的完成)

    我们编辑首先就要考虑将下拉框效果实现出来,然后再进行下一步操作:

    我们用到了Model层的操作,在第8讲里面其实已经写好了catTree方法,控制器如下所示:

    然后在列表页然他变量进行输出

    然后开始通过接收post传过来的参数进行修改,但是有一点必须要考虑的,

    水果 为顶级栏目, 苹果为 水果的下一级栏目,所以我们不能让水果变成苹果的下级栏目,我们居然考虑到这了,所以我们还是需要通过判断的,

    让爸级栏目不能一下变成孙级栏目,不然发生全家族集体失终的“惨剧”哦。。。。

    我们的解决方法是在显示的时候不显示自己和自己的子类,model代码如下所示:

            //getSubIds函数的作用是获取一个分类所有子分类的id
            public function getSubIds($cate_id){
                //找所有分类
                $data = $this -> select();
                //递归找出所有子分类的id
                return $this -> _getSubIds($data,$cate_id);
            }
            //递归查找
            private function _getSubIds($data,$cate_pid,$isclear=false){
                static $ret;
                //因为每次调用他静态变量他都会追加,所以我们让他格式化一下
                if($isclear){
                    $ret = array();
                }
                foreach($data as $k=>$v){
                    if($v['cate_pid'] == $cate_pid){
                        $ret[] = $v['cate_id'];
                        //再找这条分类的子分类
                        $this -> _getSubIds($data,$v['cate_id']);
                    }
                }
                return $ret;
            }

    控制器代码如下所示:

    public function edit(){
            $id = I('cate_id');
            $vo = M('Category')->find($id);
            $this -> assign('vo',$vo);
            //栏目列表的遍历 开始
            $cat = D('Category')->catTree();
            $this -> assign('cat',$cat);
            //栏目列表的遍历 结束
            //dump($cat);
            
            //主要作用是用来查取下级分类的 开始
            $catemod = D('Category');
            //取出当前分类所有子分类的id
            $cates = $catemod->getSubIds($id); 
            //将当前分类和子分类放到一起
            $cates[] = $id;
            $this -> assign('cates',$cates);
            //下级分类查取 结束
            
            //dump($cates);
            if(IS_POST){
                $data['cate_id'] = I('cate_id');
                $data['cate_name'] = I('cate_name');
                $data['cate_ename'] = I('cate_ename');
                $data['cate_keywords'] = I('cate_keywords');
                $data['cate_desc'] = I('cate_desc');
                $data['cate_type'] = I('cate_type');
                $data['cate_pid'] = I('cate_pid');
                $data['cate_content'] = I('cate_content');
                if($_FILES['cate_pic']['tmp_name']!=''){
                    $upload = new ThinkUpload();// 实例化上传类
                    $upload->maxSize   = 3145728 ;// 设置附件上传大小
                    $upload->exts      = array('jpg', 'gif', 'png', 'jpeg');// 设置附件上传类型
                    $upload->rootPath  = './';  //这个一定要加否则很容易中招
                    $upload->savePath  =      'Public/Uploads/'; // 设置附件上传目录
                    $info   =   $upload->uploadOne($_FILES['cate_pic']);
                    if($info){
                        //删除原来的图片
                        $cp = M('Category')->find($id);
                        unlink($cp['cate_pic']);
                        // 上传成功 获取上传文件信息  
                        //这里组装sql语句,让图片融入$data['pic']里面
                        $data['cate_pic'] = $info['savepath'].$info['savename'];
                    }else{
                        $this->error($upload->getError());
                    }
                }
                
                $mod =D("Category");
                if($mod-> create($data)){
                    if($mod->save()){
                        $this->success('修改栏目成功',U('Category/lists'));
                    }else{
                        $this ->error('修改栏目失败');
                    }
                }else{
                    $this->error($brandModel->getError());
                }
            }
            $this->display();
        }

    然后在前端进行输出即可:

    <!doctype html>
    <html>
    <head>
        <meta charset="UTF-8">
        <title>后台管理</title>
        <link rel="stylesheet" type="text/css" href="__PUBLIC__/Admin/css/common.css"/>
        <link rel="stylesheet" type="text/css" href="__PUBLIC__/Admin/css/main.css"/>
        <script type="text/javascript" src="__PUBLIC__/Admin/js/libs/modernizr.min.js"></script>
        <script type="text/javascript" src="__PUBLIC__/Admin/js/jq18m.js"></script>
        <script type="text/javascript" src="__PUBLIC__/Admin/js/hileft.js"></script>
        
        
            <script type="text/javascript" charset="utf-8" src="__PUBLIC__/Ueditor/ueditor.config.js"></script>
            
            <script type="text/javascript" charset="utf-8" src="__PUBLIC__/Ueditor/ueditor.all.min.js"></script>
            <script type="text/javascript" charset="utf-8" src="__PUBLIC__/Ueditor/lang/zh-cn/zh-cn.js"></script>
        
    
    
        
    </head>
    <body>
    
    <include file="Public/header" />
    
    <div class="container clearfix">
        <include file="Public/left" />
        <!--/sidebar-->
        <div class="main-wrap">
    
            <div class="crumb-wrap">
                <div class="crumb-list"><i class="icon-font"></i><a href="/jscss/admin/design/">首页</a><span class="crumb-step">&gt;</span><a class="crumb-name" href="/jscss/admin/design/">作品管理</a><span class="crumb-step">&gt;</span><span>新增作品</span></div>
            </div>
            <div class="result-wrap">
                <div class="result-content">
                    <form action="" method="post" id="myform" name="myform" enctype="multipart/form-data">
                        <table class="insert-tab" width="100%">
                            <tbody>
                            <tr>
                                
                                <th width="120"><i class="require-red">*</i>上级分类:</th>
                                <td>
                                    <select name="cate_pid" id="catid" class="required">
                                        
                                        <option value="0">顶级分类</option>
                                        <?php foreach($cat as $v){ 
                                                if(in_array($v['cate_id'],$cates)) 
                                                continue; 
                                        ?>
                                            <option value="<?php echo $v['cate_id']; ?>">
                                            <?php echo str_repeat('-',$v['level'] *8) . $v['cate_name']; ?>
                                            </option>
                                        <?php } ?>
                                        
                                    </select>
                                </td>
                            </tr>
                            
                                <tr>
                                    <th><i class="require-red">*</i>栏目中文名:</th>
                                    <td>
                                        <input class="common-text required" id="title" name="cate_name" size="50" value="{$vo['cate_name']}" type="text">
                                    </td>
                                </tr>
                                
                                <tr>
                                    <th><i class="require-red">*</i>栏目英文名:</th>
                                    <td><input class="common-text" name="cate_ename" size="50" value="{$vo['cate_ename']}" type="text"></td>
                                </tr>
                                
                                <tr>
                                    <th>栏目关键词:</th>
                                    <td><input class="common-text" name="cate_keywords" size="50" value="{$vo['cate_keywords']}" type="text"></td>
                                </tr>
                                
                                <tr>
                                    <th>栏目图片:</th>
                                    <td>
                                    <if condition="$vo['cate_pic'] eq ''">
                                    <div style="color:red;">抱歉目前没有图片数据</div>
                                    <else/>
                                    <img src="/{$vo['cate_pic']}" width="100" height="60">
                                    </if>
                                    <input name="cate_pic" id="" type="file"><!--<input type="submit" onclick="submitForm('/jscss/admin/design/upload')" value="上传图片"/>--></td>
                                </tr>
                                
                                <tr>
                                    <th>栏目描述:</th>
                                    <td>
                                        <textarea name="cate_desc" style="margin: 0px;  609px; height: 157px;">{$vo['cate_desc']}</textarea>
                                    </td>
                                </tr>
                                
                                
                                <tr>
                                    <th>栏目类型:</th>
                                    <if condition="$vo['cate_type'] eq 0">
                                    <td>
                                        封面栏目:<input type="checkbox" checked name="cate_type" value="0"> <br />
                                        列表栏目:<input type="checkbox" name="cate_type" value="1"> <br />
                                        产品栏目:<input type="checkbox" name="cate_type" value="2">
                                    </td>
                                    <elseif condition="$vo['cate_type'] eq 1" />
                                    <td>
                                        封面栏目:<input type="checkbox" name="cate_type" value="0"> <br />
                                        列表栏目:<input type="checkbox" checked name="cate_type" value="1"> <br />
                                        产品栏目:<input type="checkbox" name="cate_type" value="2">
                                    </td>
                                    <elseif condition="$vo['cate_type'] eq 2" />
                                    <td>
                                        封面栏目:<input type="checkbox" name="cate_type" value="0"> <br />
                                        列表栏目:<input type="checkbox" name="cate_type" value="1"> <br />
                                        产品栏目:<input type="checkbox" checked name="cate_type" value="2">
                                    </td>
                                    </if>
                                </tr>
                                
                                
                                <tr>
                                    <th>栏目内容:</th>
                                    <td>
                                        <textarea id="content" name="cate_content">{$vo['cate_content']}</textarea>
                                    </td>
                                </tr>
                                <input type="hidden" name="cate_id"  value="{$vo['cate_id']}" />
                                <tr>
                                    <th></th>
                                    <td>
                                        <input class="btn btn-primary btn6 mr10" value="提交" type="submit">
                                        <input class="btn btn6" onclick="history.go(-1)" value="返回" type="button">
                                    </td>
                                </tr>
                            </tbody></table>
                    </form>
                </div>
            </div>
    
        </div>
        <!--/main-->
    </div>
    <script type="text/javascript">
        UE.getEditor('content',{initialFrameWidth:890,initialFrameHeight:550});
        //initialFrameWidth: null 这样就是他自动设置大小
    </script>
    <style type="text/css">
        #edui2 div{
            height:25px;
        }
    </style>
    </body>
    </html>
  • 相关阅读:
    java web分页查询初试
    SQL注入原理深度解析
    JS 清除IE缓存
    Android 代码混淆及第三方jar包不被混淆
    [leetcode]Unique Paths II
    ffmpeg API录制rtsp视频流
    HDU 2045 不容易系列之(3)—— LELE的RPG难题
    Ffmpeg和SDL创建线程(转)
    “富豪相亲大会”究竟迷失了什么?
    Ffmpeg和SDL如何同步视频(转)
  • 原文地址:https://www.cnblogs.com/leigood/p/5426263.html
Copyright © 2011-2022 走看看