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 水平的题目
May 30 PHP
php中使用ExcelFileParser处理excel获得数据(可作批量导入到数据库使用)
Aug 21 PHP
使用bcompiler对PHP文件进行加密的代码
Aug 29 PHP
php中一个完整表单处理实现代码
Nov 10 PHP
PHP实现PDO的mysql数据库操作类
Dec 12 PHP
php支付宝接口用法分析
Jan 04 PHP
php绘制一条直线的方法
Jan 24 PHP
PHP的cURL库简介及使用示例
Feb 06 PHP
php获取本周星期一具体日期的方法
Apr 20 PHP
详解php魔术方法(Magic methods)的使用方法
Feb 14 PHP
Thinkphp自定义生成缩略图尺寸的方法
Aug 05 PHP
php写入文件不覆盖的实例讲解
Sep 17 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
关于使用key/value数据库redis和TTSERVER的心得体会
2013/06/28 PHP
PHP文件上传、客户端和服务器端加限制、抓取错误信息、完整步骤解析
2017/01/12 PHP
Symfony查询方法实例小结
2017/06/28 PHP
javascript 事件处理、鼠标拖动效果实现方法详解
2012/05/11 Javascript
解析javascript 实用函数的使用详解
2013/05/10 Javascript
js实现收缩菜单效果实例代码
2013/10/30 Javascript
jquery限定文本框只能输入数字即整数和小数
2013/11/29 Javascript
JS获取网页属性包括宽、高等等
2014/04/03 Javascript
使用时间戳解决ie缓存的问题
2014/08/20 Javascript
JavaScript中定义函数的三种方法
2015/03/12 Javascript
IE9+已经不对document.createElement向下兼容的解决方法
2015/09/14 Javascript
jQuery解析Json实例详解
2015/11/24 Javascript
Bootstrap 源代码分析(未完待续)
2016/08/17 Javascript
微信小程序 form组件详解
2016/10/25 Javascript
JS查找英文文章中出现频率最高的单词
2017/03/20 Javascript
详解在Vue中如何使用axios跨域访问数据
2017/07/07 Javascript
vue小图标favicon不显示的解决方案
2017/09/19 Javascript
详解Vue取消eslint语法限制
2018/08/04 Javascript
利用JavaScript缓存远程窃取Wi-Fi密码的思路详解
2018/11/05 Javascript
JS实现水平遍历和嵌套递归操作示例
2019/08/15 Javascript
vue+element实现动态加载表单
2020/12/13 Vue.js
Python实现从url中提取域名的几种方法
2014/09/26 Python
python妙用之编码的转换详解
2017/04/21 Python
Python-while 计算100以内奇数和的方法
2019/06/11 Python
利用Python绘制Jazz网络图的例子
2019/11/21 Python
使用OpenCV circle函数图像上画圆的示例代码
2019/12/27 Python
Python接口测试文件上传实例解析
2020/05/22 Python
详解python方法之绑定方法与非绑定方法
2020/08/17 Python
提高python代码运行效率的一些建议
2020/09/29 Python
美国家用电器和电子产品商店:Abt
2016/09/06 全球购物
大专自我鉴定范文
2013/10/01 职场文书
致长跑运动员广播稿
2014/01/31 职场文书
六查六看剖析材料
2014/02/15 职场文书
公益广告标语
2014/06/19 职场文书
三年级学生期末评语
2014/12/26 职场文书
汉语拼音教学反思
2016/02/22 职场文书