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 相关文章推荐
第五节 克隆 [5]
Oct 09 PHP
php动态生成JavaScript代码
Mar 09 PHP
PHP几个数学计算的内部函数学习整理
Aug 06 PHP
PHP+Ajax异步通讯实现用户名邮箱验证是否已注册( 2种方法实现)
Dec 28 PHP
解析php中array_merge与array+array的区别
Jun 21 PHP
Laravel中使用阿里云OSS Composer包分享
Feb 10 PHP
php实现的IMEI限制的短信验证码发送类
May 05 PHP
PHP封装的HttpClient类用法实例
Jun 17 PHP
Yii框架中jquery表单验证插件用法示例
Oct 18 PHP
PHP实现阿里大鱼短信验证的实例代码
Jul 10 PHP
PHP中PDO事务处理操作示例
May 02 PHP
PHP下用Swoole实现Actor并发模型的方法
Jun 12 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实现以只读方式打开文件的方法
2015/03/16 PHP
php常用经典函数集锦【数组、字符串、栈、队列、排序等】
2019/08/23 PHP
Laravel框架处理用户的请求操作详解
2019/12/20 PHP
地址栏上的一段语句,改变页面的风格。(教程)
2008/04/02 Javascript
纯js实现的论坛常用的运行代码的效果
2008/07/15 Javascript
十个优秀的Ajax/Javascript实例网站收集
2010/03/31 Javascript
另一个javascript小测验(代码集合)
2011/07/27 Javascript
json数据的列循环示例
2013/09/06 Javascript
JavaScript极简入门教程(三):数组
2014/10/25 Javascript
js如何改变文章的字体大小
2016/01/08 Javascript
jquery实现输入框实时输入触发事件代码
2016/12/21 Javascript
浅析webpack 如何优雅的使用tree-shaking(摇树优化)
2017/08/16 Javascript
vue实现手机号码抽奖上下滚动动画示例
2017/10/18 Javascript
webpack多页面开发实践
2017/12/18 Javascript
基于Vue插入视频的2种方法小结
2019/04/02 Javascript
基于JavaScript或jQuery实现网站夜间/高亮模式
2020/05/30 jQuery
Openlayers显示地理位置坐标的方法
2020/09/28 Javascript
[50:12]EG vs Fnatic 2018国际邀请赛小组赛BO2 第二场 8.19
2018/08/21 DOTA
python 提取文件的小程序
2009/07/29 Python
Python 判断是否为质数或素数的实例
2017/10/30 Python
Python解决N阶台阶走法问题的方法分析
2017/12/28 Python
特征脸(Eigenface)理论基础之PCA主成分分析法
2018/03/13 Python
对Python 内建函数和保留字详解
2018/10/15 Python
如何通过Python实现标签云算法
2019/07/02 Python
Python中私有属性的定义方式
2020/03/05 Python
Python中的With语句的使用及原理
2020/07/29 Python
Python使用内置函数setattr设置对象的属性值
2020/10/16 Python
详解python中的异常捕获
2020/12/15 Python
用Python实现定时备份Mongodb数据并上传到FTP服务器
2021/01/27 Python
美国领先的奢侈手表在线零售商:WatchMaxx
2017/12/17 全球购物
Java面试题汇总
2015/12/06 面试题
采购求职信
2014/03/17 职场文书
不同意离婚上诉状
2015/05/23 职场文书
六一儿童节主持开场白
2015/05/28 职场文书
Pandas 数据编码的十种方法
2022/04/20 Python
Mysql 数据库中的 redo log 和 binlog 写入策略
2022/04/26 MySQL