ThinkPHP 6 模板篇之分页实现

模板的分页渲染的时候着实遇到一些问题,一个是不能循环遍历,另一个没有分页。等找到问题后,却原来只是小问题,确实不应该,还是因为不熟悉,在此记录一下,也供没有做过的同学查询。

目录

分页实现

获取分页集合

静态模板遍历

显示分页

美化分页

css样式

效果

其他功能

单独赋值分页变量

获取总记录

限定总记录数

设置简洁分页

总结


分页实现

获取分页集合

获取分页数据集合,无论使用模型或者Db实例都使用paginate()方法来获取。

通过view方法把分页数据集合传递给视图。

public function index()
{
    $pageSize = 2;
    $admins = Db::name('admins')->order('id', 'desc')->paginate($pageSize);

    return view('test/index', [
        'list' => $admins
    ]);
}

静态模板遍历

使用单个花括号的foreach/foreach。

点语法来访问数组的内容。

<table>
    <tr>
        <th>ID</th>
        <th>名称</th>
        <th>登录次数</th>
        <th>状态</th>
        <th>操作</th>
    </tr>
    {foreach $list as $k => $v}
    <tr>
        <td>{$v.id}</td>
        <td>{$v.name}</td>
        <td>{$v.login_count}</td>
        <td>{if $v.status == 1} 正常 {else} 禁用 {/if}</td>
        <td><a href="#">删除</a></td>
    </tr>
    {/foreach}
</table>

显示分页

注意:如果数据条数较少,设置分页数据也要少,否则不会显示分页

在视图变量后增加|raw,要紧挨着,并且花括号两边不要有空格,否则可能解析为字符串。

{$list|raw }

 分页效果如下:

美化分页

原来的分页很难看,可以通过style设置样式,仿照bootstrap分页样式。

css样式

<style>
    .pagination {
        display: inline-block;
        padding-left: 0;
        margin: 20px 0;
        border-radius: 4px;
    }

    .pagination > li {
        display: inline;
    }

    .pagination > li:first-child > span {
        margin-left: 0;
        border-top-left-radius: 4px;
        border-bottom-left-radius: 4px;
    }

    .pagination > li > a, .pagination > li > span {
        background-color: #FFF;
        border: 1px solid #DDD;
        float: left;
        line-height: 1.42857;
        margin-left: -1px;
        padding: 6px 18px;
        position: relative;
        text-decoration: none;
        color:#23527c;
    }

    .pagination > li.active span {
        background-color: #009688 !important;
        border-color: #DDD;
        cursor: default;
        z-index: 2;
    }

    .pagination > li > a:hover {
        background-color: #eee;
    }

    .pagination > .disabled > span, .pagination > .disabled > span:focus, .pagination > .disabled > span:hover {
        cursor: not-allowed;
        background-color: #fff;
        border-color: #ddd;
    }
</style>

效果

其他功能

单独赋值分页变量

public function index()
{
    $pageSize = 2;
    $admins = Db::name('admins')->order('id', 'desc')->paginate($pageSize);

    return view('test/index', [
        'list'      =>  $admins,
        'page'      =>  $admins->render(),
    ]);
}

模板

{$page|raw }

获取总记录

可通过分页集合变量获取其中的总记录数量

$list = Db::name('admins')->order('id', 'desc')->paginate($pageSize);
echo $list->total();

限定总记录数

如:限定从2开始取2条

->paginate(2, 2);

设置简洁分页

设置页码为只有上下页的简洁分页。

因为类名改变,上面美化分页样式就变了,需要重新修改样式。

->paginate(2, true)

总结

ThinkPHP的内置分页已经封装好了, 直接通过paginate来获取分页很简单。如果样式不好看,可以自己设置一些样式来美化。

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

JSON_L

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值