夺命雷公狗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 \Think\Upload();// 实例化上传类
                $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; width: 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>
时间: 04-24

夺命雷公狗ThinkPHP项目之----企业网站10之栏目的编辑完善(无限极分类的完成)的相关文章

夺命雷公狗ThinkPHP项目之----企业网站8之栏目的添加完善(无限极分类的完成)

我们刚才只是完成了添加的一部分,但是我们的上级分类也不能永远都是只有一个死的嘛,所以我们需要对她进行修改: 我们先将add方法里面的数据查出来再说: 然后在模板页进行遍历: 展示效果如下所示: 虽然是出现了,但是没有向我们平常时候见到的无限极分类一样噢,一般比如分类 多多,分类下面的 好多美女啊 是多多的下级分类,那么好多美女啊他前面是有几个空格之类的隔开, 那么我们就需要在model层里面对她进行排序的设置了: <?php namespace Admin\Model; use Think\Mo

夺命雷公狗ThinkPHP项目之----企业网站9之栏目的列表完善(无限极分类的完成)

我们刚才已经写好model了,那么这里直接来调用下他即可: public function lists(){ $mod = D('Category')->catTree(); $this -> assign('mod',$mod); $this->display(); } 然后在模版里面进行遍历即可: <!doctype html> <html> <head> <meta charset="UTF-8"> <tit

夺命雷公狗ThinkPHP项目之----企业网站12之栏目的删除完成

我们删除要在分类模型中添加一个_before_delete的钩子函数,而且在删除一个分类时候,如果这个分类有子分类就不允许删除 model层代码如下所示: <?php namespace Admin\Model; use Think\Model; class CategoryModel extends Model{ protected $_validate = array( //array(验证字段1,验证规则,错误提示,[验证条件,附加规则,验证时间]), array('cate_name',

夺命雷公狗ThinkPHP项目之----企业网站6之栏目的添加(主要用模型来验证字段)

我们刚才的控制器已经写好了,那么我们现在就来完成我们的模型, 首先我们在Model目录下创建一个CategoryModel.class.php 代码如下: <?php namespace Admin\Model; use Think\Model; class CategoryModel extends Model{ protected $_validate = array( //array(验证字段1,验证规则,错误提示,[验证条件,附加规则,验证时间]), array('cate_name',

夺命雷公狗ThinkPHP项目之----企业网站7之栏目的修改(主要用模型来验证字段)

我们照老,在控制器里面先查出我们所需要用到的数据: 然后直接遍历到模版上即可: 然后再开始写提交过来的数据处理问题(注意一定要接收修改页面通过隐藏域)而且我们刚才已经写好我们的model层了,所以直接用大D即可实现: <!doctype html> <html> <head> <meta charset="UTF-8"> <title>后台管理</title> <link rel="styleshe

夺命雷公狗ThinkPHP项目之----企业网站5之栏目的添加(主要是图片上传)

我们照老,先老搞定控CategoryController.class.php制器,代码如下所示: <?php namespace Admin\Controller; use Think\Controller; class CategoryController extends Controller { public function lists(){ $this->display(); } public function add(){ $cmod = D('category'); if(IS_P

夺命雷公狗ThinkPHP项目之----企业网站1之快速搭建后台

我们还是老规矩照老方法,将框架里面多余的东西都干掉,然后在index.php里面将框架搭建起来 <?php //定义项目目录 define('APP_PATH','./WEB/'); //开启调试 define('APP_DEBUG',True); //包含thinkphp项目入口文件 require "Thinkphp/Thinkphp.php"; 然后进入WEB目录下,并复制一个Home然后改名为Admin 然后再Index控制器下进行操作 代码如下所示: <?php

夺命雷公狗ThinkPHP项目之----企业网站28之网站前台左侧导航的实现

我们基于刚才在model层的找顶级分类的代码在进行修改即可: <?php namespace Home\Controller; use Think\Controller; class CommonController extends Controller { function __construct(){ //继承父类的构造方法,所以网站在执行的时候会先执行他 parent::__construct(); //头部二级分类的显示 开始 $mod = M("Category");

夺命雷公狗ThinkPHP项目之----企业网站4之数据库连接

我们众所周知,我们在开发的时候网站是需要连接上我们的数据库的,毕竟数据库是网站的最核心之一嘛,废话不多说直接开干.... 我们先找到:config.php文件对她进行修改,因为我们网站前后台都用到数据库,所以我们直接在yao\WEB\Common\Conf下找到config.php前后台共享的文件里面修改下数据库配置即可.. 代码如下所示: <?php return array( //'配置项'=>'配置值' //系统中允许访问的模块(前后台) 'MODULE_ALLOW_LIST' =>