tp5.0学习(二)

本文详细介绍了ThinkPHP5.0框架中的分页功能,包括使用步骤、配置、拓展功能以及模板输出。同时讲解了文件上传的原理、单文件与多文件上传、验证规则以及文件大小限制。还涵盖了商品列表分页展示和图像处理,如生成缩略图。此外,涉及数据库操作、composer的使用和路由设置等。
摘要由CSDN通过智能技术生成

24、分页功能

见手册–杂项–分页

分页原理:核心是使用sql语句中的limit限制条件

分页的实现分为两部分:一个是分页栏链接html代码,一个是当前页数据查询。

ThinkPHP5.0内置了分页实现,要给数据添加分页输出功能在5.0变得非常简单,可以直接在Db类查询的时候调用paginate方法:

paginate(分页条数,是否简洁分页|分页总数,分页配置)

是否简洁分页:boolean类型
分页配置:[] 数组类型

分页配置示例

paginate(分页条数,是否简洁分页|分页总数,[
		//分页变量名
		'var_page' => 'page',
		//额外参数,可以传递多个额外参数,所以它的值还是个数组
		'query' => ['keyword'=>'oppo''额外参数二'=>'额外参数二的值']
])

1.tp框架中的分页使用步骤

1.1控制器查询数据

Db类查询调用paginate

// 查询状态为1的用户数据 并且每页显示10条数据
$list = Db::name('user')->where('status',1)->paginate(10);
// 把分页数据赋值给模板变量list
$this->assign('list', $list);
// 渲染模板输出
return $this->fetch();

也可以模型查询调用

// 查询状态为1的用户数据 并且每页显示10条数据
$list = User::where('status',1)->paginate(10);
// 把分页数据赋值给模板变量list
$this->assign('list', $list);
// 渲染模板输出
return $this->fetch();

1.2模板输出分页(到这里已经完成分页)

<div>
<ul>
{
   volist name='list' id='user'}
    <li> {
   $user.nickname}</li>
{
   /volist}
</ul>
</div>
{
   $list->render()}

也可以单独赋值分页输出的模板变量

// 查询状态为1的用户数据 并且每页显示10条数据
$list = User::where('status',1)->paginate(10);
// 获取分页显示
$page = $list->render();
// 模板变量赋值
$this->assign('list', $list);
$this->assign('page', $page);
// 渲染模板输出
return $this->fetch();

因此模板文件中的代码就需要变更为


<div>
<ul>
{
   volist name='list' id='user'}
    <li> {
   $user.nickname}</li>
{
   /volist}
</ul>
</div>
{
   $page}


默认情况下,生成的分页输出是完整分页功能,带总分页数据和上下页码,分页样式只需要通过样式修改即可,完整分页默认生成的分页输出代码为:

<ul class="pagination">
<li><a href="?page=1">&laquo;</a></li>
<li><a href="?page=1">1</a></li>
<li class="active"><span>2</span></li>
<li class="disabled"><span>&raquo;</span></li>
</ul>

1.3.可传入总记录数(拓展)

这个几乎就用不上,如果你知道你的数据记录数是不变的,是固定的可以这样用


// 查询状态为1的用户数据 并且每页显示10条数据 总记录数为1000
$list = User::where('status',1)->paginate(10,1000);
// 获取分页显示
$page = $list->render();
// 模板变量赋值
$this->assign('list', $list);
$this->assign('page', $page);
// 渲染模板输出
return $this->fetch();


1.4.简洁分页(拓展)

有时候在做一个手机页面的时候,可能不需要那么多页面,只想要一个上一页,下一页
控制器

// 查询状态为1的用户数据 并且每页显示10条数据
$list = User::where('status',1)->paginate(10,true);
// 把分页数据赋值给模板变量list
$this->assign('list', $list);
// 渲染模板输出
return $this->fetch();

简洁模式输出的分页HTML代码格式为

<ul class="pager">
<li><a href="?page=1">&laquo;</a></li>
<li class="disabled"><span>&raquo;</span></li>
</ul>

1.5.分页参数(拓展)

主要的分页参数如下:

参数 描述
list_rows 每页数量
page 当前页
path url 路径
query url额外参数
fragment url锚点
var_page 分页变量
type 分页类名

比如当前页面var_page属性就是代表这个,有时候想更换这个page名称就可以通过配置

在这里插入图片描述

又比如我们想用自己的分页类文件的时候,也可以通过配置进行变更
在这里插入图片描述

1.5.1配置文件设置参数方式
//分页配置
'paginate'               => [
    'type'     => 'bootstrap',
    'var_page' => 'page',
],

type属性支持命名空间,例如:
这个的意思是你可以把分页驱动放到任意位置,然后只需要通过命名空间就可以进行调用

//分页配置
'paginate'               => [
    'type'     => '\org\page\bootstrap',
    'var_page' => 'page',
],

1.5.2也可以在调用分页方法的时候传入配置
$list = Db::name('user')->where('status',1)->paginate(10,true,[
    'type'     => 'bootstrap',
    'var_page' => 'page',
]);

看第四小节,利用这个知识点,做一个分页+搜索的功能

2.框架中分页相关的类(了解、自定义)

位置

thinkphp\library\think\Paginator.php  

分页驱动thinkphp\library\think\paginator\driver\bootstrap.php

3.商品列表分页展示

注意:如果你的总数都没有每页分页数多,就不会显示分页
在这里插入图片描述
这里显示就样式错乱了,原因是这套后台模板本身就对这个ul li标签做了自定义样式
在这里插入图片描述
解决办法就是我们自己再写一套样式用于覆盖它

        <style type="text/css">
            .pagination li{
   list-style:none;float:left;margin-left:10px;
                padding:0 10px;
                background-color:#5a98de;
                border:1px solid #ccc;
                height:26px;
                line-height:26px;
                cursor:pointer;color:#fff;
            }
            .pagination li a{
   color:white;padding: 0;line-height: inherit;border: none;}
            .pagination li a:hover{
   background-color: #5a98de;}
            .pagination li.active{
   background-color:white;color:gray;}
            .pagination li.disabled{
   background-color:white;color:gray
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值