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 高手之路(一)
Oct 09 PHP
落伍首发 php+mysql 采用ajax技术的 省 市 地 3级联动无刷新菜单 源码
Dec 16 PHP
Php Cookie的一个使用注意点
Nov 08 PHP
第四章 php数学运算
Dec 30 PHP
is_uploaded_file函数引发的不能上传文件问题
Oct 29 PHP
yii框架表单模型使用及以数组形式提交表单数据示例
Apr 30 PHP
浅析Yii2缓存的使用
May 10 PHP
10个值得深思的PHP面试题
Nov 14 PHP
PHP生成唯一ID之SnowFlake算法
Dec 17 PHP
Laravel实现表单提交
May 07 PHP
laravel 解决后端无法获取到前端Post过来的值问题
Oct 22 PHP
PHP数据源架构模式之表入口模式实例分析
Jan 23 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
php使用$_POST或$_SESSION[]向js函数传参
2014/09/16 PHP
Windows7下的php环境配置教程
2015/02/28 PHP
php使用Image Magick将PDF文件转换为JPG文件的方法
2015/04/01 PHP
ThinkPHP2.x防范XSS跨站攻击的方法
2015/09/25 PHP
ECshop 迁移到 PHP7版本时遇到的兼容性问题
2016/02/15 PHP
GRID拖拽行的实例代码
2013/07/18 Javascript
把文本中的URL地址转换为可点击链接的JavaScript、PHP自定义函数
2014/07/29 Javascript
jQuery淡入淡出元素让其效果更为生动
2014/09/01 Javascript
浅谈jQuery绑定事件会叠加的解决方法和心得总结
2016/10/26 Javascript
原生js实现移动端触摸轮播的示例代码
2017/12/22 Javascript
AngularJS使用$http配置对象方式与服务端交互方法
2018/08/13 Javascript
vue工程全局设置ajax的等待动效的方法
2019/02/22 Javascript
JS实现页面数据懒加载
2020/02/13 Javascript
解决vuecli3中img src 的引入问题
2020/08/04 Javascript
[46:28]EG vs Liquid 2019国际邀请赛淘汰赛 败者组 BO3 第二场 8.23
2019/09/05 DOTA
[01:44]Ti10举办地公布
2019/08/25 DOTA
Python中将字典转换为XML以及相关的命名空间解析
2015/10/15 Python
用python结合jieba和wordcloud实现词云效果
2017/09/05 Python
python3 kmp 字符串匹配的方法
2018/07/07 Python
python读取文件名并改名字的实例
2019/01/07 Python
python三引号输出方法
2019/02/27 Python
Python如何爬取实时变化的WebSocket数据的方法
2019/03/09 Python
python多进程(加入进程池)操作常见案例
2019/10/21 Python
浅谈cv2.imread()和keras.preprocessing中的image.load_img()区别
2020/06/12 Python
解决python pandas读取excel中多个不同sheet表格存在的问题
2020/07/14 Python
python使用Word2Vec进行情感分析解析
2020/07/31 Python
努比亚手机官网:nubia
2016/10/06 全球购物
求职自荐信
2013/12/14 职场文书
财务管理职业生涯规划书
2014/02/26 职场文书
《回乡偶书》教学反思
2014/04/12 职场文书
有限责任公司股东合作协议书范本
2014/10/30 职场文书
长城导游词400字
2015/01/30 职场文书
教师聘用意向书
2015/05/11 职场文书
酒吧七夕情人节宣传语
2015/11/24 职场文书
导游词之镇江-金山寺
2019/10/14 职场文书
redis 存储对象的方法对比分析
2021/08/02 Redis