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 fopen 读取带中文URL地址的一点见解
Sep 25 PHP
php之XML转数组函数的详解
Jun 07 PHP
php switch语句多个值匹配同一代码块的实现
Mar 03 PHP
php数组删除元素示例
Mar 21 PHP
在PHP中运行Linux命令并启动SSH服务的例子
Jun 12 PHP
PHP开发框架kohana3 自定义路由设置示例
Jul 14 PHP
phpnow php探针环境检测代码
Nov 04 PHP
php实现QQ空间获取当前用户的用户名并生成图片
Jul 25 PHP
使用PHP接受文件并获得其后缀名的方法
Aug 05 PHP
Yii调试查看执行SQL语句的方法
Jul 15 PHP
使用php自动备份数据库表的实现方法
Jul 28 PHP
php处理抢购类功能的高并发请求
Feb 08 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中使用gettext解决国际化问题的例子(i18n)
2014/06/13 PHP
php实现网页缓存的工具类分享
2015/07/14 PHP
简单谈谈php浮点数精确运算
2016/03/10 PHP
jQuery对象和DOM对象的相互转化实现代码
2010/03/02 Javascript
javascript URL编码和解码使用说明
2010/04/12 Javascript
Js组件的一些写法
2010/09/10 Javascript
整理8个很棒的 jQuery 倒计时插件和教程
2011/12/12 Javascript
JS特权方法定义作用以及与公有方法的区别
2013/03/18 Javascript
解析jquery中的ajax缓存问题
2013/12/19 Javascript
jQuery控制TR显示隐藏的三种常用方法
2014/08/21 Javascript
JavaScript使用cookie记录临时访客信息的方法
2015/04/07 Javascript
JS非Alert实现网页右下角“未读信息”效果弹窗
2015/09/26 Javascript
JavaScript学习小结(7)之JS RegExp
2015/11/29 Javascript
vueJS简单的点击显示与隐藏的效果【实现代码】
2016/05/03 Javascript
Javascript typeof与instanceof的区别
2016/10/18 Javascript
基于百度地图实现产品销售的单位位置查看功能设计与实现
2016/10/21 Javascript
基于jquery二维码生成插件qrcode
2017/01/07 Javascript
JavaScript初学者必看“new”
2017/06/12 Javascript
捕获未处理的Promise错误方法
2017/10/13 Javascript
python检测服务器是否正常
2014/02/16 Python
python生成随机验证码(中文验证码)示例
2014/04/03 Python
Python使用APScheduler实现定时任务过程解析
2019/09/11 Python
pandas 空数据处理方法详解
2019/11/02 Python
使用批处理脚本自动生成并上传NuGet包(操作方法)
2019/11/19 Python
Python实现队列的方法示例小结【数组,链表】
2020/02/22 Python
解决pytorch多GPU训练保存的模型,在单GPU环境下加载出错问题
2020/06/23 Python
pycharm-professional-2020.1下载与激活的教程
2020/09/21 Python
详解appium自动化测试工具(monitor、uiautomatorviewer)
2021/01/27 Python
CSS3之背景尺寸Background-size使用介绍
2013/10/14 HTML / CSS
美术专业个人自我评价
2014/01/18 职场文书
中学生运动会口号
2014/06/07 职场文书
我的职业生涯规划:打造自己的运动帝国
2014/09/18 职场文书
党员剖析材料范文
2014/09/30 职场文书
2014年组织委员工作总结
2014/12/01 职场文书
2016年第32个教师节致辞
2015/11/26 职场文书
JS新手入门数组处理的实用方法汇总
2021/04/07 Javascript