thinkphp框架无限级栏目的排序功能实现方法示例

本文实例讲述了thinkphp框架无限级栏目的排序功能实现方法。分享给大家供大家参考,具体如下:

题目中我们并没有说明是tp5的无限级排序还是tp3的无限级排序就是为了让小新手们明白,这些功能的实现跟你使用的框架是没有关系的,不管你是tp5还是tp3还是laravel还是yii框架都没有关系,我们强调的是思路,是解决问题的方法,演示的时候因为我在用tp3所以无所谓了。

无限级栏目的排序非常简单,这次以博文的方式分享给大家解决的思路。

上图:

上图是我们实现的无限级分类,我们要注意两个字段,id和排序sort字段,目前sort字段的值都是50,是默认值。接着为大家截图数据表结构

上图sort用来实现排序pid用来实现无限级分类

实现无限级分类的关键是我们对排序字段的写法,我们把整块代码拿到,但是用到的只有一行:

<form method="post" action="">
<table class="table table-bordered table-hover">
<thead class="">
<tr>
<th width="6%" class="text-center">ID</th>
<th width="6%" class="text-center">pid</th>
<th width="8%" class="text-center">排序</th>
<th>栏目名称</th>
<th width="16%" class="text-center">操作</th>
</tr>
</thead>
<tbody>
<volist name="cateRes" id="cate">
<tr>
<td align="center">{$cate.id}</td>
<td align="center">{$cate.pid}</td>
<td align="center">
<input type="text" name="sort[{$cate.id}]" value="{$cate.sort}" /></td>
<td><?php echo str_repeat('-', $cate['level']*8);?>{$cate.cate_name}</td>
<td align="center">
<a href="" class=" rel="external nofollow" btn btn-primary btn-sm shiny">
<i class="fa fa-edit"></i> 编辑
</a>
<a href="#" rel="external nofollow" onClick="warning('确实要删除吗', ”)" class="btn btn-danger btn-sm shiny">
<i class="fa fa-trash-o"></i> 删除
</a>
</td>
</tr>
</volist>
<tr>
<td colspan="4">
<button type="button" tooltip="排序" style="margin-left:225px; width:50px;" class="btn btn-sm btn-azure btn-addon">排序</button>
</td>
</tr>
</tbody>
</table>
</form>

上面的代码我们可以看出整个table是用form包裹的,因为我们要提交排序字段,所以需要表单。

我们实现无限极栏目排序的核心代码:

<input type="text" name="sort[{$cate.id}]" value="{$cate.sort}" />

就是这一句,实际上我们是拼装了一个sort[]数组,整个数组的每个元素的键是当前栏目的id而值是当前栏目的排序的值,这样我们一旦提交数组就可以根据id修改sort了

完整代码:

public function lst(){
$cate=D('Cate');
if(IS_POST){//排序
$data=I('sort');
foreach ($data as $k => $v) {
$cate->where(array('id'=>$k))->save(['sort'=>$v]);
}
return;
}
$cateRes=$cate->cateTree();//无限级分类树
$this->assign([
'cateRes'=>$cateRes,
]);
$this->display('list');
}

更多关于thinkPHP相关内容感兴趣的读者可查看本站专题:《ThinkPHP入门教程》、《thinkPHP模板操作技巧总结》、《ThinkPHP常用方法总结》、《codeigniter入门教程》、《CI(CodeIgniter)框架进阶教程》、《Zend FrameWork框架入门教程》及《PHP模板技术总结》。

希望本文所述对大家基于ThinkPHP框架的PHP程序设计有所帮助。

(0)

相关推荐

  • thinkPHP实现递归循环栏目并按照树形结构无限极输出的方法

    本文实例讲述了thinkPHP实现递归循环栏目并按照树形结构无限极输出的方法.分享给大家供大家参考,具体如下: 这里使用thinkphp递归循环栏目按照树形结构无限极输出,并保存为一个数组,利于模板调用 具体代码如下: private function categoryTree($parentid,$level) //因为是本类中使用所以定于为私有函数 { $Category= D('Category'); $result = $Category->where("`parentid`=&q

  • thinkphp获取栏目和文章当前位置的方法

    本文实例讲述了thinkphp获取栏目和文章当前位置的方法.分享给大家供大家参考.具体实现方法如下: 今天把博客一些细节完善了一下,其中修改了一下栏目页和文章页中的"当前位置".以前栏目很少,就用死办法做的(首页 -> 栏目的名字),现在栏目多了,渐渐二级栏目,三级栏目也来了,这样的方式显然不太合适,于是就改进了一下.也不难,利用一个递归函数就可以了. 测试效果如下图所示: 查看源文件效果: 复制代码 代码如下: <a href="http://www.jb51.

  • ThinkPHP无限级分类原理实现留言与回复功能实例

    本文所述留言板程序使用了无限级分类的原理,可以实现无限级留言与回复.留言列表gclist保留了留言层次空格,使留言--回复层次分明.分享给大家供大家参考.具体分析如下: 功能上,本程序可以实现无限级留言与回复,即对留言回复,对回复的留言回复.当然你也可以作有限制的控制,使其只对留言回复,关键是在模板代码中去掉回复的留言中的"回复该留言"即可.欢迎去拍砖! 程序效果如下图所示: 完整源码点击此处本站下载. 数据表: 复制代码 代码如下: -- ----------------------

  • 使用ThinkPHP的自动完成实现无限级分类实例详解

    一.实现效果 二.主要代码 1.模板 2.控制器 ·index模块 ·add模块 3.模型 三.代码 以便于各位看官复制测试 1.模板 <form action="__URL__/add" method="post"> 栏目<select name="fid" size=20> <option value="0">栏目</option> <volist name='list

  • ThinkPHP删除栏目(实现批量删除栏目)

    前段时间发表了一个删除栏目的随笔,当时实现的功能是删除一条信息,这次来实现一下批量删除栏目. 我们需要达到的是这样一个效果: 选中批量删除按钮后可以选中所有该页面的栏目,这个是前端页面的实现,在这里就不多说了,我们直接进入正题:批量删除的功能. 1.前端页面这里也有一个小小的点,就是选择框的name值应给给他赋值为一个id的数组,value值为该栏目的id. 2.我们在控制器中单独写一个批量删除的方法 public function privilege_bdel(){ $ids = I('ids

  • Thinkphp无限级分类代码

    本篇就一点一点教大家写一个无限级分类出来,其实掌握一个知识,最主要的是要掌握无限级分类的逻辑,那么写起来就很容易的多了. 首先看数据库表:xp_cate 控制器:CateAction.class.php <?php class CateAction extends Action{ function index(){ $cate=M('Cate'); $list=$cate->field("id,name,pid,path,concat(path,'-',id) as bpath&qu

  • thinkphp5实现无限级分类

    tp5对分类数据表的信息读取与展示,我们即可以控制器完成,也可以在对应的模型中完成.本案例,我们在模型中完全成.况且,对数据表的增,删改查操作,本来就是模型的本职工作. 首先声明一下,我们采用递归的方式来实现无限分类.但无限分类的实现,不是只是递归一种方式,还有一种是全路径方式,也可以实现,不过,这种方式通常用在全路径导航菜单中.所以,这里我们还是用最常见的递归函数来实现:无限分类. 首先我们先创建一个静态方法:getCate,为什么要静态方式,因为静态方法执行效率高,不需要实例化,而且,分类查

  • thinkphp实现无限分类(使用递归)

    本文实例为大家分享了thinkphp实现无限分类的详细代码,希望对大家学习无限分类有所启发. 数据库:test 数据表:(tp_category): Common/conf/config.php 'DB_CONFIG2' => array( 'db_type' => 'mysql', 'db_user' => 'root', 'db_pwd' => '', 'db_host' => 'localhost', 'db_port' => '3306', 'db_name'

  • Thinkphp中数据按分类嵌套循环实现方法

    本文实例讲述了Thinkphp中数据按分类嵌套循环实现方法.分享给大家供大家参考.具体实现方法如下: 做thinkphp时要用到循环里面嵌套循环的,并第二个循环是和外面的有关联的. thinkphp官网给出的文档为: 复制代码 代码如下: <volist name="list" id="vo">      <volist name="vo['sub']" id="sub">          {$sub

  • ThinkPHP自动填充实现无限级分类的方法

    本文实例展示了ThinkPHP自动填充实现无限级分类的方法,是ThinkPHP常用功能之一,非常具有实用价值.现将完整实例分享给大家,供大家参考.具体实现步骤如下: 表aoli_cate如下图所示: 一.action部分: aoli/Home/Lib/Action/CataAction.class.php文件如下: <?php class CateAction extends Action{ function index(){ $cate=M('cate'); $list=$cate->fie

随机推荐