在日常的APP或小程序应用中,分页是到处存在的。如在打开APP时,首先引入眼帘的是最新的信息,一般最先打开的信息有几十条,当我们阅读完成后,如果这个时候将手指向下滑动,这个时候APP会重新获取最新的数据,这个过程是重新加载数据;而如果我们在看完第一屏数据后,用手指向上滑动,这个时候APP会在原有的基础上,加载另外一页的数据,并且显示在第一屏数据的下方,这个过程就是我们所说的分页,俗称刷手机。
在TP框架中,分页是很方便实现的,我们可以通过使用page函数或者paginate函数来对已有的数据来实现分页。具体的操作如下:
1.创建控制器和数据模型
在前面的视频中,我们已经创建了User控制器和数据模型,今天我们首先需要创建Plan控制器和Plan数据模型,在VSCode中输入Ctrl+~按钮,打开终端,输入相应的创建命令:
php think make:controller app\controller\v1\Plan
php think make:model app\model\Plan
2.创建getPlanList控制器方法
在Plan控制器中,创建getPlanList,目的是为客户端访问服务器提供接口,代码如下:
//获取plan列表
public function getPlanList(){
$res = (new PlanModel())->getPlanData();
echo json_encode($res) ;
}
注意 :在这里,我们首先需要对于引用的数据模型在控制器的前端进行引用,并且调用模型中的方法,从而从模型中顺利获取数据,所以,该控制器的详细代码如下:
<?php
declare (strict_types = 1);
namespace app\controller\v1;
use app\model\Plan as PlanModel;
use think\Request;
class Plan
{
//获取plan列表
public function getPlanList(){
$res = (new PlanModel())->getPlanData();
echo json_encode($res) ;
}
}
3.创建getPlanData数据模型方法
在上面的控制器方法中,我们可知调用了名称为getPlanData的数据模型方法。该方法主要是为前端提供数据库中的指定数据。我们在这里做如下的创建:(暂不包含分页代码)
public function getPlanData(){
$plan = Plan::select();
return $plan;
}
以上代码是从数据库的数据表“tblWeeksSet”中获取全部数据。但是这里尚未指定数据表,所以这里我们需要单独添加数据表的名称,和上面的方法一起,代码如下
//指定表名称
protected $table = 'tblWeeksSet';
//指定主键
protected $pk = 'AutoID';
//获取plan数据
public function getPlanData(){
$plan = Plan::select();
return $plan;
}
4.page分页函数和paginate分页函数
在TP框架中,分页函数有两个,分别是page和paginate两个函数,这两个函数功能类似,但是,推荐使用paginate函数为佳。
- page函数:
- page(PNo,PNum)函数包含2个参数,分别是PNo页面,PNum一页的数量。如上面的代码,要实现分页,我们可以写出:
//获取plan数据
public function getPlanData(){
$plan = Plan::page(1,10)->select();
return $plan;
}
- 这里表示将内容分成第一页10条数据,仅此而已!如果用该分页函数确实可以进行相应的分页,但是总体还是比较麻烦,我们需要对总共多少记录,需要分成多少页,是无法得知的,要求我们单独进行另外数据的获取后才能完成,所以该函数并不是最好的选择。
- paginate(PNum)函数,仅包含每页的记录数量参数。但是该函数的优点是,在分页时,提供完整是分页数据,包括总记录数量(total);每页分页数据量(per_page);当前页(current_page);最后一页(last_page),及当前页的数据(data),分页代码如下:
//获取plan数据
public function getPlanData(){
$plan = Plan::paginate(5);
return $plan;
}
- 返回数据如下图:
那么,如果要访问第二页,第三页怎么办呢?我们可以在URL中添加page参数,如,原本访问分页接口的是:
接下去的其他页面,我们可以这样去访问:
也就是说,在后面跟上page参数即可,要访问第几页,就输入相应的数字即可。
总结
TP框架中分页还是非常的方便,通过使用paginate函数,不但可以分页,也可以很方便访问指定的页面。在我们的前端,如果要求翻页,则我们可以使用当前页与最后页进行判断,如果当前页小于最后页,则通过当前页+1的方式作为page参数的值,放在URL中进行访问下一页即可。好,今天内容写到这里,希望朋友们能够喜欢!我们下次见!