2023年6月21日发(作者:)
thinkphp6数组分页⼀、因为有复杂的数据统计,需要组数组,这时候使⽤tp6的分页会有问题,于是改为数组分页的⽅式,将以前tp3的分页拿过来改了⼀下,话不多说上代码,引⼊tp3分页源代码,为了和tp6的区别不会太明显,修改了源代码,放⼊tp6vendortopthinkframeworksrcthink 下:修改详情:1、样式(ul li)2、C⽅法改为 config3、U⽅法改为 url4、ACTION_NAME改为:$request = thinkfacadeRequest::instance();
$request ->action
namespace Think;class Page{ public $firstRow; // 起始⾏数 public $listRows; // 列表每页显⽰⾏数 public $parameter; // 分页跳转时要带的参数 public $totalRows; // 总⾏数 public $totalPages; // 分页总页⾯数 public $rollPage = 8;// 分页栏每页显⽰的页数 public $lastSuffix = true; // 最后⼀页是否显⽰总页数 private $p = 'page'; //分页参数名 private $url = ''; //当前链接URL private $nowPage = 1; // 分页显⽰定制 private $config = array( 'header' => '共 %TOTAL_ROW% 条记录,每页显⽰ %LIST_ROWS% 条,%NOW_PAGE% / %TOTAL_PAGE%页', 'prev' => '«', 'next' => '»', 'first' => '1...', 'last' => '...%TOTAL_PAGE%', 'theme' => '%UP_PAGE% %FIRST% %LINK_PAGE% %END% %DOWN_PAGE%', ); /** * 架构函数 * @param array $totalRows 总的记录数 * @param array $listRows 每页显⽰记录数 * @param array $parameter 分页跳转的参数 */ public function __construct($totalRows, $listRows=20, $parameter = array()) { //++++++++++ 这⾥修改 C ++++++++++++++++++ config('VAR_PAGE') && $this->p = config('VAR_PAGE'); //设置分页参数名称 /* 基础设置 */ $this->totalRows = $totalRows; //设置总记录数 $this->listRows = $listRows; //设置每页显⽰⾏数 $this->parameter = empty($parameter) ? $_GET : $parameter; $this->nowPage = empty($_GET[$this->p]) ? 1 : intval($_GET[$this->p]); $this->nowPage = $this->nowPage > 0 ? $this->nowPage : 1; $this->firstRow = $this->listRows * ($this->nowPage - 1); } /** * 定制分页链接设置 * 定制分页链接设置 * @param string $name 设置名称 * @param string $value 设置值 */ public function setConfig($name,$value) { if(isset($this->config[$name])) { $this->config[$name] = $value; } } /** * ⽣成链接URL * @param integer $page 页码 * @return string */ private function url($page){ return str_replace(urlencode('[PAGE]'), $page, $this->url); } /** * 组装分页链接 * @return string */ public function show() { if(0 == $this->totalRows) return '';
/* ⽣成URL */ $this->parameter[$this->p] = '[PAGE]'; //++++++++++ 这⾥修改 U 和 ACTION_NAME ++++++++++++++++++ $request = thinkfacadeRequest::instance();
$this->url = url($request->action(), $this->parameter); /* 计算分页信息 */ $this->totalPages = ceil($this->totalRows / $this->listRows); //总页数 if(!empty($this->totalPages) && $this->nowPage > $this->totalPages) { $this->nowPage = $this->totalPages; } /* 计算分页临时变量 */ $now_cool_page = $this->rollPage/2; $now_cool_page_ceil = ceil($now_cool_page); $this->lastSuffix && $this->config['last'] = $this->totalPages; //上⼀页 $up_row = $this->nowPage - 1; $up_page = $up_row > 0 ? '
//替换分页内容 //++++++++++ 这⾥修改 样式 ++++++++++++++++++
return "
- {$page_str}
⼆、具体使⽤//头部记得引⼊use thinkPage;//数组分页//传⼊分页值$p = empty($_GET['page']) ? 1 : $_GET['page'];//每页显⽰条数$num = empty(Request::param('num')) ? $this->num : Request::param('num');//当前获取的数据 我这⾥的数据数组是 $info 是⼀个⼆位数组$count = count($info);//总数据条数 每页数据条数 需要带的参数(⽐如查询的值)$page = new Page($count,$num,['num'=>$num,'startTime'=>'','endTime'=>'','province'=>$province]);//10为每页显⽰的条数,$page为传过来的页码$info = array_slice($info,($p-1)*$num,$num); //重组数组 / ($page-1)*$num 计算每页的数据从第⼏条开始return view('totalData',[ 'p' => $p, //显⽰第⼏页 'num' => $num, 'page' => ($count < $num) ? '' : $page->show(), // 获取分页显⽰注意判断当前数据是否够分页 'pageshow' => pageShow($count,$num,$p), //总记录数,每页显⽰条数 'info' => $info]);//前端模板输出/* {$page|raw} */
2023年6月21日发(作者:)
thinkphp6数组分页⼀、因为有复杂的数据统计,需要组数组,这时候使⽤tp6的分页会有问题,于是改为数组分页的⽅式,将以前tp3的分页拿过来改了⼀下,话不多说上代码,引⼊tp3分页源代码,为了和tp6的区别不会太明显,修改了源代码,放⼊tp6vendortopthinkframeworksrcthink 下:修改详情:1、样式(ul li)2、C⽅法改为 config3、U⽅法改为 url4、ACTION_NAME改为:$request = thinkfacadeRequest::instance();
$request ->action
namespace Think;class Page{ public $firstRow; // 起始⾏数 public $listRows; // 列表每页显⽰⾏数 public $parameter; // 分页跳转时要带的参数 public $totalRows; // 总⾏数 public $totalPages; // 分页总页⾯数 public $rollPage = 8;// 分页栏每页显⽰的页数 public $lastSuffix = true; // 最后⼀页是否显⽰总页数 private $p = 'page'; //分页参数名 private $url = ''; //当前链接URL private $nowPage = 1; // 分页显⽰定制 private $config = array( 'header' => '共 %TOTAL_ROW% 条记录,每页显⽰ %LIST_ROWS% 条,%NOW_PAGE% / %TOTAL_PAGE%页', 'prev' => '«', 'next' => '»', 'first' => '1...', 'last' => '...%TOTAL_PAGE%', 'theme' => '%UP_PAGE% %FIRST% %LINK_PAGE% %END% %DOWN_PAGE%', ); /** * 架构函数 * @param array $totalRows 总的记录数 * @param array $listRows 每页显⽰记录数 * @param array $parameter 分页跳转的参数 */ public function __construct($totalRows, $listRows=20, $parameter = array()) { //++++++++++ 这⾥修改 C ++++++++++++++++++ config('VAR_PAGE') && $this->p = config('VAR_PAGE'); //设置分页参数名称 /* 基础设置 */ $this->totalRows = $totalRows; //设置总记录数 $this->listRows = $listRows; //设置每页显⽰⾏数 $this->parameter = empty($parameter) ? $_GET : $parameter; $this->nowPage = empty($_GET[$this->p]) ? 1 : intval($_GET[$this->p]); $this->nowPage = $this->nowPage > 0 ? $this->nowPage : 1; $this->firstRow = $this->listRows * ($this->nowPage - 1); } /** * 定制分页链接设置 * 定制分页链接设置 * @param string $name 设置名称 * @param string $value 设置值 */ public function setConfig($name,$value) { if(isset($this->config[$name])) { $this->config[$name] = $value; } } /** * ⽣成链接URL * @param integer $page 页码 * @return string */ private function url($page){ return str_replace(urlencode('[PAGE]'), $page, $this->url); } /** * 组装分页链接 * @return string */ public function show() { if(0 == $this->totalRows) return '';
/* ⽣成URL */ $this->parameter[$this->p] = '[PAGE]'; //++++++++++ 这⾥修改 U 和 ACTION_NAME ++++++++++++++++++ $request = thinkfacadeRequest::instance();
$this->url = url($request->action(), $this->parameter); /* 计算分页信息 */ $this->totalPages = ceil($this->totalRows / $this->listRows); //总页数 if(!empty($this->totalPages) && $this->nowPage > $this->totalPages) { $this->nowPage = $this->totalPages; } /* 计算分页临时变量 */ $now_cool_page = $this->rollPage/2; $now_cool_page_ceil = ceil($now_cool_page); $this->lastSuffix && $this->config['last'] = $this->totalPages; //上⼀页 $up_row = $this->nowPage - 1; $up_page = $up_row > 0 ? '
//替换分页内容 //++++++++++ 这⾥修改 样式 ++++++++++++++++++
return "
- {$page_str}
⼆、具体使⽤//头部记得引⼊use thinkPage;//数组分页//传⼊分页值$p = empty($_GET['page']) ? 1 : $_GET['page'];//每页显⽰条数$num = empty(Request::param('num')) ? $this->num : Request::param('num');//当前获取的数据 我这⾥的数据数组是 $info 是⼀个⼆位数组$count = count($info);//总数据条数 每页数据条数 需要带的参数(⽐如查询的值)$page = new Page($count,$num,['num'=>$num,'startTime'=>'','endTime'=>'','province'=>$province]);//10为每页显⽰的条数,$page为传过来的页码$info = array_slice($info,($p-1)*$num,$num); //重组数组 / ($page-1)*$num 计算每页的数据从第⼏条开始return view('totalData',[ 'p' => $p, //显⽰第⼏页 'num' => $num, 'page' => ($count < $num) ? '' : $page->show(), // 获取分页显⽰注意判断当前数据是否够分页 'pageshow' => pageShow($count,$num,$p), //总记录数,每页显⽰条数 'info' => $info]);//前端模板输出/* {$page|raw} */
发布评论