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调用三种数据库的方法(3)
Oct 09 PHP
php基础知识:类与对象(4) 范围解析操作符(::)
Dec 13 PHP
php 友好URL的实现(吐血推荐)
Oct 04 PHP
PHP mail 通过Windows的SMTP发送邮件失败的解决方案
May 27 PHP
php fckeditor 调用的函数
Jun 21 PHP
PHP使用DES进行加密与解密的方法详解
Jun 06 PHP
PHP删除HTMl标签的实现代码
Jun 30 PHP
深入解析PHP 5.3.x 的strtotime() 时区设定 警告信息修复
Aug 05 PHP
PHP实现视频文件上传完整实例
Aug 28 PHP
PHP实现的简易版图片相似度比较
Jan 07 PHP
php数组去除空值函数分享
Feb 02 PHP
PHP中静态变量的使用方法实例分析
Dec 01 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
优化使用mysql存储session的php代码
2008/01/10 PHP
PHP iconv 函数转gb2312的bug解决方法
2009/10/11 PHP
php生成mysql的数据字典
2016/07/07 PHP
PHP输出Excel PHPExcel的方法
2018/07/26 PHP
基于jquery的可多选的下拉列表框
2012/07/20 Javascript
jQuery+CSS 半开折叠效果原理及代码(自写)
2013/03/04 Javascript
javascript中的nextSibling使用陷(da)阱(keng)
2014/05/05 Javascript
jquery插件corner实现圆角边框的方法
2015/03/09 Javascript
javascript:void(0)是什么意思及href=#与href=javascriptvoid(0)的区别
2015/11/13 Javascript
JavaScript弹窗基础篇
2016/04/27 Javascript
bootstrap布局中input输入框右侧图标点击功能
2016/05/16 Javascript
js事件源window.event.srcElement兼容性写法(详解)
2016/11/25 Javascript
Javascript 链式作用域详细介绍
2017/02/23 Javascript
jQuery dateRangePicker插件使用方法详解
2017/07/28 jQuery
详解使用Next.js构建服务端渲染应用
2018/07/10 Javascript
Vue递归组件+Vuex开发树形组件Tree--递归组件的简单实现
2019/04/01 Javascript
uni-app如何实现增量更新功能
2020/01/03 Javascript
go和python调用其它程序并得到程序输出
2014/02/10 Python
Python进阶之递归函数的用法及其示例
2018/01/31 Python
两个元祖T1=('a', 'b'),T2=('c', 'd')使用匿名函数将其转变成[{'a': 'c'},{'b': 'd'}]的几种方法
2019/03/05 Python
Django更新models数据库结构步骤
2020/04/01 Python
详解python中GPU版本的opencv常用方法介绍
2020/07/24 Python
python 8种必备的gui库
2020/08/27 Python
Python ellipsis 的用法详解
2020/11/20 Python
Bitiba意大利:在线宠物商店
2020/10/31 全球购物
华硕新加坡官方网上商店:ASUS Singapore
2020/07/09 全球购物
自荐信封面
2013/12/04 职场文书
五一家具促销方案
2014/01/10 职场文书
高中英语教学反思
2014/02/04 职场文书
安全生产月活动总结
2014/05/04 职场文书
贷款承诺书范文
2014/05/19 职场文书
2014年团队工作总结
2014/11/24 职场文书
乡镇安全生产月活动总结
2015/05/08 职场文书
结婚主持人致辞
2015/07/28 职场文书
停车场管理制度范本
2015/08/05 职场文书
SQL bool盲注和时间盲注详解
2022/07/23 SQL Server