thinkphp5下分页paginate()详解

paginate()可以传递3个参数

paginate($listRows = null, $simple = false, $config = [])

//$listRows  每页显示数据条数
//$simple 是否简洁模式
//$config  额外的配置参数

下面请看基础代码示例

//最基础的使用方法
$list = Db::name('book')->paginate(10);

this->assign('page',$list->render());
$this->assign('list',$list);
return $this->fetch('index/test');
<div style="padding:120px;">
    <ul>
        {volist name="list" id="vo"}
        <li>{$vo.b_title}-{$vo.b_author}</li>
        {/volist}
    </ul>
    {$page}
</div>

前端显示效果如下

若第二参数为true

$list = Db::name('book')->paginate(10,true);

效果如下

前端只会显示上下页按钮,将不再显示详细页数


接下来主要验证第三参数传参效果

1.list_rows

$list = Db::name('book')->paginate(10,false,[
    //每页显示的数据条数
    //若第一参数$listRows存在,则以第一参数为准
    'list_rows' => 5    
]);

2.page

$list = Db::name('book')->paginate(10,false,[
    //只显示第二页数据
    //即便url链接中page=3,其显示的数据还是page=2时的数据
    'page' => 2,
]);

3.path

$list = Db::name('book')->paginate(10,false,[
    //url路径
    //跳转到根目录下
    'path' => '/',
    //跳转到外网
    'path' => 'http://www.bookubang.com'
]);

网页链接效果如下

4.query

$list = Db::name('book')->paginate(10,false,[
    //传递额外参数
    'query'  => ['web'=>'虹光'],
]);

效果如下

5.fragment

$list = Db::name('book')->paginate(10,false,[
    //页面跳转到你指定的锚点处
    'fragment' => 'maodian',
]);
{for start="1" end="100"}
<p>这是一条过渡句--{$i}</p>
{/for}
<div id="maodian" style="padding:20px 150px;">
    <ul>
        {volist name="list" id="vo"}
        <li>{$vo.b_title}-{$vo.b_author}</li>
        {/volist}
    </ul>
    {$page}
</div>
{for start="100" end="200"}
<p>这是一条过渡句--{$i}</p>
{/for}

效果如下

添加锚点后,页面将自动跳到所定义的锚点处,不再是页面头部

6.var_page

$list = Db::name('book')->paginate(10,false,[
    //分页变量,默认是page,修改后url链接中的page将会变成list
    'var_page' => 'list',
]);

前端效果

7.type

$list = Db::name('book')->paginate(10,false,[
    //分页类名,类文件在/thinkphp/library/think/paginator/driver下
    //默认是bootstrap,修改后将会报错
    //若你不喜欢分页的样式风格,可以去文件中修改或者创建类似文件,然后对其替换
    'type' => 'bootstrap'
]);