• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

PHP.35-TP框架商城应用实例-后台11-商品分类-删除分类(2种方法)、添加、修改 ...

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

删除分类

删除一个分类的同时,其所有子分类都删除

在控制器CategoryCtroller.class.php中添加删除函数(delete)

在分类模型中添加钩子函数_before_delete()【注:此处要使用父类模型执行delete函数,防止进入死循环;父类模型要指定操作的数据表】

构造批量删除参数

思路:先观察批量删除时的传参结构,然后在钩子函数_befeore_delete()中构造出批量删除的id数组

构造批量删除【注:$option要按引用传参,否则函数内对局部变量的值的修改,不能影响函数外的变量

添加分类【控制器-》页面】

1、在控制器CategoryController.class.php/add()中取出所有分类

public function getTree()
        {
            $data = $this->select();
            return $this->_getTree($data);
        }
        /*****递归从数据中找子分类*****/
        private function _getTree($data, $parent_id=0, $level=0)
        {
            static $_ret = array();                
            foreach ($data as $k => $v)
            {
                if($v['parent_id'] == $parent_id)
                {
                    $v['level'] = $level;        //用来标记这个分类是第几级
                    $_ret[] = $v;
                    //找子分类
                    $this->_getTree($data, $v['id'], $level+1);
                }
            }
            return $_ret;
        }
getTree()

 【注:下拉框】

修改分类 【控制器->页面】{注:修改页面,要保留原分类信息}

1、在控制器CategoryController.class.php/edit()中取出所有分类且取出所以子分类

public function edit()
    {
        $id = I('get.id');
        if(IS_POST)
        {
            $model = D('category');
            if($model->create(I('post.'), 2))
            {
                if($model->save() !== FALSE)
                {
                    $this->success('修改成功!', U('lst', array('p' => I('get.p', 1))));
                    exit;
                }
            }
            $this->error($model->getError());
        }    
        
        $model = D('category');
        $data = $model->find($id);
        //取出所有的分类做下拉框
        $catData = $model->getTree();
        //取出当前分类的子分类
        $children = $model->getChildren($id);
        /* var_dump($children);
        var_dump($data);
        var_dump($catData);die(); */
        
        $this->assign(array(
            'children' => $children,
            'data' => $data,
            'catData' => $catData,
            '_page_title' => '修改分类',
            '_page_btn_name' => '分类列表',
            '_page_btn_link' => U('lst'),
        ));
        
        $this->display();
    }
edit()

  2、修改页面(eit.html)中构造表单

<layout name="layout" />

<div class="main-div">
    <form name="main_form" method="POST" action="__SELF__" >
        <input type="hidden" name="id" value="<?php echo $data['id']; ?>" />
        <table cellspacing="1" cellpadding="3" width="100%">
            <tr>
                <td class="label">上级分类:</td>
                <td>
                    <select name="parent_id">
                        <option value="0">顶级分类</option>
                        <?php foreach($catData as $k => $v):
                            //跳过当前分类和子分类
                            if($v['id'] == $data['id'] || in_array($v['id'], $children))
                                continue;
                            if($v['id'] == $data['parent_id'])
                                $select = 'selected="selected"';
                            else
                                $select = '';
                        ?>
                        <option <?php echo $select; ?> value="<?php echo $v['id']; ?>"><?php echo str_repeat('-', 8*$v['level']) .$v['cat_name']; ?></option>
                        <?php endforeach; ?>
                    </select>
                </td>
            </tr>
            <tr>
                <td class="label">分类名称:</td>
                <td>
                    <input  type="text" name="cat_name" value="<?php echo $data['cat_name'];?>" size='60' />
                </td>
            </tr>
            <tr>
                <td colspan="99" align="center">
                    <input type="submit" class="button" value=" 确定 " />
                    <input type="reset" class="button" value=" 重置 " />
                </td>
            </tr>
        </table>
    </form>
</div>


<script>
</script>
edit.html

注:上级分类不能是当前分类也不能是当前分类的子分类,则下拉框中不显示

 

 


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap