ThinkPHP自动填充实现无限级分类的方法


Posted in PHP onAugust 22, 2014

本文实例展示了ThinkPHP自动填充实现无限级分类的方法,是ThinkPHP常用功能之一,非常具有实用价值。现将完整实例分享给大家,供大家参考。具体实现步骤如下:

表aoli_cate如下图所示:

ThinkPHP自动填充实现无限级分类的方法

一、action部分:

aoli/Home/Lib/Action/CataAction.class.php文件如下:

<?php
class CateAction extends Action{
  function index(){
    $cate=M('cate');
    $list=$cate->field("id,name,pid,path,concat(path,'-',id) as bpath")->order('bpath')->select();
    foreach($list as $key=>$value){
       $list[$key]['count']=count(explode('-',$value['bpath']));
    }
    $this->assign('alist',$list);
    $this->display();  
  }
  //添加栏目
  function add(){
    $cate=new CateModel();
    
    if($vo=$cate->create()){
      if($cate->add()){
        $this->success('添加栏目成功');  
      }else{
        $this->error('添加栏目失败');  
      }
      //dump($vo);  
    }else{
      $this->error($cate->getError());  
    }
  }
  
}
?>

二、模型部分:

aoli/Home/Lib/Model/CataModel.class.php文件如下:

<?php
class CateModel extends Model{//对应数据库中的表aoli_cate
  protected $_auto=array(
    array('path','tclm',3,'callback'),  
  ); 
  
  function tclm(){
    $pid=isset($_POST['pid'])?(int)$_POST['pid']:0;
    echo ($pid);
    if($pid==0){
      $data=0;
    }else{
      $list=$this->where("id=$pid")->find();
      $data=$list['path'].'-'.$list['id'];//子类的path为父类的path加上父类的id
    }
    return $data;  
  }
}
?>

三、view视图部分

aoli/Home/Tpl/default/Cate/index.html页面如下:

<form action="__URL__/add" method="post">
 请选择父级栏目:<select name="pid" size="20">
         <option value="0">根栏目</option>
         <volist name="alist" id="vo">
          <option value="{$vo['id']}">
            <php>
              for($i=0;$i<$vo['count'];$i++){
                echo ' ';  
              }
            </php>
            {$vo['name']}
          </option>
         </volist>
        </select><br />
 新的栏目名称:<input type="text" name="name" /><br />
 <input type="submit" value="添加栏目" />
</form>

相信本文所述实例对大家ThinkPHP程序设计有一定的参考价值。

PHP 相关文章推荐
php下过滤HTML代码的函数
Dec 10 PHP
PHP mail 通过Windows的SMTP发送邮件失败的解决方案
May 27 PHP
Mysql的Root密码忘记,查看或修改的解决方法(图文介绍)
Jun 14 PHP
Yii中CGridView关联表搜索排序方法实例详解
Dec 03 PHP
PHP模块化安装教程
Jun 01 PHP
PHP实现统计在线人数功能示例
Oct 15 PHP
php+jQuery实现的三级导航栏下拉菜单显示效果
Aug 10 PHP
php实现的AES加密类定义与用法示例
Jan 29 PHP
使用PHPExcel导出Excel表
Sep 08 PHP
PHP children()函数讲解
Feb 03 PHP
Yii Framework框架使用PHPExcel组件的方法示例
Jul 24 PHP
PHP并发场景的三种解决方案代码实例
Feb 27 PHP
ThinkPHP验证码和分页实例教程
Aug 22 #PHP
ThinkPHP文件上传实例教程
Aug 22 #PHP
ThinkPHP中ajax使用实例教程
Aug 22 #PHP
ThinkPHP中的常用查询语言汇总
Aug 22 #PHP
ThinkPHP多语言支持与多模板支持概述
Aug 22 #PHP
ThinkPHP中的三大自动简介
Aug 22 #PHP
PHP实现克鲁斯卡尔算法实例解析
Aug 22 #PHP
You might like
一个更简单的无限级分类菜单代码
2007/01/16 PHP
php中使用ExcelFileParser处理excel获得数据(可作批量导入到数据库使用)
2010/08/21 PHP
PHP程序员最常犯的11个MySQL错误小结
2010/11/20 PHP
php计算当前程序执行时间示例
2014/04/24 PHP
php微信公众平台开发之微信群发信息
2016/09/13 PHP
显示、隐藏密码
2006/07/01 Javascript
为jquery.ui.dialog 增加“在当前鼠标位置打开”的功能
2009/11/24 Javascript
jQuery实现为图片添加镜头放大效果的方法
2015/06/25 Javascript
JavaScript条件判断_动力节点Java学院整理
2017/06/26 Javascript
JavaScript学习笔记之DOM操作实例分析
2019/01/08 Javascript
JS实现计算小于非负数n的素数的数量算法示例
2019/02/26 Javascript
JS实现在线ps功能详解
2019/07/31 Javascript
Vue 动态路由的实现及 Springsecurity 按钮级别的权限控制
2019/09/05 Javascript
javascript设计模式 ? 原型模式原理与应用实例分析
2020/04/10 Javascript
Vue-CLI 3 scp2自动部署项目至服务器的方法
2020/07/24 Javascript
使用PYTHON创建XML文档
2012/03/01 Python
Python使用cx_Oracle模块将oracle中数据导出到csv文件的方法
2015/05/16 Python
python+Django+apache的配置方法详解
2016/06/01 Python
Python内建模块struct实例详解
2018/02/02 Python
python 获取list特定元素下标的实例讲解
2018/04/09 Python
解决python3 pika之连接断开的问题
2018/12/18 Python
Pytorch之保存读取模型实例
2019/12/30 Python
美国购车网站:TrueCar
2016/10/19 全球购物
同程旅游英文网站:LY.com
2018/11/13 全球购物
英国领先的男装设计师服装独立零售商:Repertoire Fashion
2020/10/19 全球购物
金融专业个人的自我评价
2013/10/18 职场文书
小学生春游活动方案
2014/08/20 职场文书
授权委托书样本及填写说明
2014/09/19 职场文书
教师批评与自我批评心得体会
2014/10/16 职场文书
考试没考好检讨书(精选篇)
2014/11/16 职场文书
2014年共青团工作总结
2014/12/10 职场文书
开国大典观后感
2015/06/04 职场文书
用人单位的规章制度,怎样制定才是有效的?
2019/07/09 职场文书
python中sqllite插入numpy数组到数据库的实现方法
2021/06/21 Python
MySQL数据库查询进阶之多表查询详解
2022/04/08 MySQL
Golang bufio详细讲解
2022/04/21 Golang