问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

thinkphp 无限极分类怎么调用出父栏目名称

发布网友 发布时间:2022-04-07 06:27

我来回答

3个回答

懂视网 时间:2022-04-07 10:49

本文实例展示了ThinkPHP自动填充实现无限级分类的方法,是ThinkPHP常用功能之一,非常具有实用价值。现将完整实例分享给大家,供大家参考。

ThinkPHP无限分类的使用

具体实现步骤如下(本文采用TP框架的3.1.3版本):

(推荐教程:thinkphp教程)

第一步:表aoli_cate如下图所示

CREATE TABLE `fenlei` (
 `id` int(10) unsigned NOT NULL AUTO_INCREMENT COMMENT '主键',
 `name` varchar(255) DEFAULT NULL COMMENT '父id',
 `pid` int(255) NOT NULL COMMENT '名字',
 `path` varchar(20) DEFAULT NULL,//path字段是给数据排序用
 PRIMARY KEY (`id`)
) ENGINE=MyISAM AUTO_INCREMENT=15 DEFAULT CHARSET=utf8;
insert into fenlei(id,name,pid,path) values
(1,’新闻’,0,’0’),
(2,’中国新闻’,1,’0-1’),//path 最后一个数据是排序用的
(3,’美国新闻’,1,’0-1’),
(4,’北京新闻’,2,’0-1-2’),
(5,’华盛顿新闻’,3,’0-1-3’),
(6,’日本新闻’,1,’0-1’);

20151211141515025.png

第二步:action部分

aoli/Home/Lib/Action/CataAction.class.php文件如下:

<?php
class CateAction extends Action{
 function index(){
 //实例化cate
 $cate=M('cate');
 //获取数据
 //将path和id连接起来,组合成为bpath数组
 $list=$cate->field("id,name,pid,path,concat(path,'-',id) as bpath")->order('bpath')->select();
 foreach($list as $key=>$value){
 //在查询获取的数组里面增加一个'count'数组;
 //统计bpath字段的字符串个数,并赋值给'count'数组。
 $list[$key]['count']=count(explode('-',$value['bpath']));
 }
 //展示数据
 $this->assign('alist',$list);
 $this->display(); 
 }
 //添加栏目
 function add(){
 //实例化CateModel类
 $cate=new CateModel();
 //如果从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
 //在Model类定义 $_auto 属性,可以完成数据自动处理功能,用来处理默认值、数据过滤以及其他系统写入字段。$_auto属性是由多个填充因子组成的数组。
 protected $_auto=array(
 //示例 
 //对name字段在新增的时候回调getName方法
 //array('name','getName',1,'callback'),
 //'path'填充字段
 //'tclm'回调函数
 // 3 新增数据和更新数据的时候都处理
 // callback :回调方法 ,表示填充的内容是一个当前模型的方法
 array('path','tclm',3,'callback'), 
 ); 
 //回调函数
 function tclm(){
 //如果pid存在,就转成整形,不存在就赋值0,表示是根目录
 $pid=isset($_POST['pid'])?(int)$_POST['pid']:0;
 //可以查看pid
 //echo ($pid);
 //如果是根目录,就是在select表单没有选任何值提交的时候
 if($pid==0){
 //
 $data=0;
 }else{
 //如果id和pid相等
 $list=$this->where("id=$pid")->find();
 //把回调值$data赋值
 $data=$list['path'].'-'.$list['id'];//子类的path为父类的path加上父类的id
 }
 //回调值
 return $data; 
 }
}
?>

第四步:view视图部分

<!--提交到本类的add方法-->
<form action="__URL__/add" method="post">
//size="20"可以将select 框变大
 请选择父级栏目:<select name="pid" size="20">
  //value="0"表示为根目录
  <option value="0">根栏目</option>
  //展示数据
  <volist name="alist" id="vo">
  <option value="{$vo['id']}">
  <php>
  <!--以字段count统计出来的,path字段里面含的字符串来做总数-->
  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>

热心网友 时间:2022-04-07 07:57

一、分类表sort的字段:id,pid,title
二、产品表proct的字段:id,sortid(对应分类表的id),title
分类表的内容有3个分类,如:
一级分类、二级分类、*分类
产品表有一条信息,所属分类是二级分类
 //列表循环
        $proct = D('ProctView');//视图模型
        if(!empty($sortid)){  
            //父类找子类
            $sortidArr = "";
            foreach(findChild($sortResult,$sortid) as $k => $w){
                $sortidArr .= $w['sortid'].",";
            }
            $where['proct.sortid'] = array('in',"$sortidArr");
                $where['sort.sortid'] = $sortid;
                        $where['_logic'] = 'or';
            $map['_complex'] = $where;
        }

热心网友 时间:2022-04-07 09:15

另写一个获取父栏目的函数。
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
北京协和售后 spcp代收费是什么 Doppelherz/双心 铁元营养口服液 500ml-详细介绍 淘宝阿尔卑斯店的德国铁元怎么样? 后面的肩膀缝疼因为什么 刮痧后一躺下肩膀疼的要命 “亭台六七座”的出处是哪里 mahini 是什么意思? 外阴溃烂了怎么办 外阴溃疡,溃疡处伤口不愈合,可以用什么药 荣耀x20se如何设置门禁卡的啊? 论坛发帖 荣耀x20SE有没有内存卡卡槽?只看到电话卡卡槽 荣耀x20手机双卡怎么装?- 问一问 华为x20怎么插手机卡 我想在淘宝论坛社区发帖可为什么一直说我没有权利发帖和回帖呢? 在淘宝论坛发帖的好处是什么 请问论坛发帖有什么好处啊??? 淘宝论坛怎么发帖子 请教一下论坛发帖的事项哪位了解并指点一下?谢谢了 天涯论坛发帖注意事项 论坛等级需要几级才能在社区论坛上发帖阿? vivo x5l怎么设置按回车键发送消息? vivo手机回车键怎么设置为发短信 vivoy33输入法回车键发送怎么弄 自重1.6吨,手扶拖拉机能拉吗? vivo手机按回车键直接发送信息在哪关闭 10匹手扶拖拉机能拉多少吨? 怎么删除金山在电脑里的各种插件 请问拖拉机的载重量是多少 QQ邮箱上的照片已过期怎样才能恢复- 问一问 公司未给危化品运输车辆上保险,出了事故当事人能拒赔吗 交通事故中第三者不同意保险公司的意见怎么处理 第三者责任险拒赔范围 人保财险第三者责任险免责条款里没有要求货运资格证但是拒绝理赔怎么办? 第三者责任险被保险人不予勉赔 超载 三者险 拒赔 交通事故后,报保险,他们说我没有从业资格证,第三者拒赔,我该怎么办 挂车没有买交强险,主车的险都买齐了,主车出事了,保险公司拒赔第三者,请问合理吗? 道路危险货物承运人责任保险 与第三者责任险的区别 肇事逃逸第三者责任险保险公司可以拒赔吗 保险公司拒赔第三者,说我没有从业资格证,我可以起诉保险公司吗 我买了第三者不计免赔的出了事故后保险公司说我没有从业资格证不给理赔,要怎么办呢 今年的最后一天上班怎么在朋友圈表达自己的心情 离职最后一天上班告别说说 休假最后一天说说心情 最后一天上班发点什么说说? 今年最后一天的心情说说 跟大家说说上班的最后一天,你是什么感觉? 今天是上班最后一天,明天就放假了,想发下心情说说,要写什么比较好听呢?