tp5分页骚操作

作者: xahy 分类: 笔记 发布时间: 2019-07-28 20:33
  • model 层分页获取数据
/***
 * 分页获取新闻
 * @param array $data
 * @return \think\Paginator
 */
public function getNews($data = []) {
    ///查询条件
    $data['status'] = [
        'neq', config('code.new_status_delete')
    ];

    ///排序
    $order = ['id' => 'desc'];

    ///查询
    return $this->where($data)
        ->order($order)
        ->paginate();
}

 

  • controller 层

转换参数并调用数据

public function index() {
    ///获取参数
    $data = input('param.');

    /// 转换查询条件
    $whereData = [];
    if(!empty($data['start_time']) && !empty($data['end_time'])
        && $data['end_time'] > $data['start_time']
    ) {
        $whereData['create_time'] = [
            ['gt', strtotime($data['start_time'])],
            ['lt', strtotime($data['end_time'])],
        ];
    }

    ///分页获取数据
    $news = model('News')->getNews($whereData);


    ///渲染页面
    return $this->fetch('', [
        'cats' => config('cat.lists'),
        'news' => $news,
    ]);
}

 

  • 展示层

骚操作在这里,通过 appends 使得分页链接带上搜索参数:

<!--展示数据部分start-->
<!--展示数据部分end-->
<!--分页函数start-->
{:pagination($news)}
<!--分页函数end-->

 

/***
 * 分页函数
 * appends get参数
 * @param $obj
 * @return string
 */
function pagination($obj) {
    if(!$obj) {
        return '';
    }

    $params = request()->param();
    return '<div>'.$obj->appends($params)->render().'</div>';
}

 

总结:

目前已知 tp5 使分页链接携带搜索参数的方式有如下:

  •  paginate(ADMIN_PAGE_LIMIT,false,$query_pram)
  • $obj->appends($params)->render()

 

 

 

发表评论

电子邮件地址不会被公开。 必填项已用*标注