cmf5分页相关

Posted djiz

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了cmf5分页相关相关的知识,希望对你有一定的参考价值。

//分页配置在app/config.php

‘paginate‘ => [
   ‘type‘ => ‘\cmf\paginator\Bootstrap‘,
   ‘var_page‘ => ‘page‘,
   ‘list_rows‘ => 15,
],

//分页调用 think/db/Query.php 

技术分享图片
/**
     * 分页查询
     * @param int|array $listRows 每页数量 数组表示配置参数
     * @param int|bool  $simple   是否简洁模式或者总记录数
     * @param array     $config   配置参数
     *                            page:当前页,
     *                            path:url路径,
     *                            query:url额外参数,
     *                            fragment:url锚点,
     *                            var_page:分页变量,
     *                            list_rows:每页数量
     *                            type:分页类名
     * @return \think\Paginator
     * @throws DbException
     */
    public function paginate($listRows = null, $simple = false, $config = [])
    {
        if (is_int($simple)) {
            $total  = $simple;
            $simple = false;
        }
        if (is_array($listRows)) {
            $config   = array_merge(Config::get(‘paginate‘), $listRows);
            $listRows = $config[‘list_rows‘];
        } else {
            $config   = array_merge(Config::get(‘paginate‘), $config);
            $listRows = $listRows ?: $config[‘list_rows‘];
        }

        /** @var Paginator $class */
        $class = false !== strpos($config[‘type‘], ‘\\‘) ? $config[‘type‘] : ‘\\think\\paginator\\driver\\‘ . ucwords($config[‘type‘]);
        $page  = isset($config[‘page‘]) ? (int) $config[‘page‘] : call_user_func([
            $class,
            ‘getCurrentPage‘,
        ], $config[‘var_page‘]);

        $page = $page < 1 ? 1 : $page;

        $config[‘path‘] = isset($config[‘path‘]) ? $config[‘path‘] : call_user_func([$class, ‘getCurrentPath‘]);

        if (!isset($total) && !$simple) {
            $options = $this->getOptions();

            unset($this->options[‘order‘], $this->options[‘limit‘], $this->options[‘page‘], $this->options[‘field‘]);

            $bind    = $this->bind;
            $total   = $this->count();
            $results = $this->options($options)->bind($bind)->page($page, $listRows)->select();
        } elseif ($simple) {
            $results = $this->limit(($page - 1) * $listRows, $listRows + 1)->select();
            $total   = null;
        } else {
            $results = $this->page($page, $listRows)->select();
        }
        return $class::make($results, $listRows, $page, $total, $simple, $config);
    }
View Code

 $class = false !== strpos($config[‘type‘], ‘\\‘) ? $config[‘type‘] : ‘\\think\\paginator\\driver\\‘ . ucwords($config[‘type‘]);  

通过配置的路径加载分页类

$userQuery = Db::name("mall_order");
$where=$where?$where:[‘user_id‘ => $userId];
$order=$order?$order:‘id desc‘;
$orderlist = $userQuery->where($where)->order($order)->paginate(10);
$data[‘page‘] = $orderlist->render(); //分页
$data[‘lists‘] = $orderlist->items();






以上是关于cmf5分页相关的主要内容,如果未能解决你的问题,请参考以下文章

具有相同功能的活动和片段

modx - 当我在同上片段中使用“&documents =”参数时,分页不起作用

片段被视图分页器布局切割

Symfony2 将哈希片段参数附加到分页 URL

FragmentStatePagerAdapter 视图分页器片段在活动重新创建后不显示

FragmentStatePagerAdapter视图分页器片段在重新创建活动后未显示