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


    删除分类

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

    在控制器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

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

     

  • 相关阅读:
    h5自定义播放器得实现原理
    this a sao
    Winform(C#)输入完毕后,按Enter键触发Button事件
    解析xml文件,C# 获取所有节点的属性值
    xml节点和元素的关系
    C#中DataGridView控件使用大全
    Linq To Xml操作XML增删改查
    winform中如何选中datagridview中的一行数据双击后跳转并将其显示在另一个页面的datagirdview中
    Winform中的dataGridView添加自动编号
    C# winform 主界面打开并关闭登录界面
  • 原文地址:https://www.cnblogs.com/zixuanfy/p/7018869.html
Copyright © 2020-2023  润新知