thinkphp6陣列分頁

2021-10-07 13:18:12 字數 3092 閱讀 1603

一、因為有複雜的資料統計,需要組陣列,這時候使用tp6的分頁會有問題,於是改為陣列分頁的方式,將以前tp3的分頁拿過來改了一下,話不多說上**,引入tp3分頁源**,為了和tp6的區別不會太明顯,修改了源**,放入tp6 \vendor\topthink\framework\src\think 下:

修改詳情:

1、樣式(ul  li)

2、c方法改為 config

3、u方法改為 url

4、action_name改為:

$request = \think\facade\request::instance(); 

$request ->action 

namespace think;

class page

/*** 定製分頁鏈結設定

* @param string $name 設定名稱

* @param string $value 設定值

*/public function setconfig($name,$value)

}/**

* 生成鏈結url

* @param integer $page 頁碼

* @return string

*/private function url($page)

/*** 組裝分頁鏈結

* @return string

*/public function show()

/* 計算分頁臨時變數 */

$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 ? 'url($up_row) . '">' . $this->config['prev'] . '

' : '' . $this->config['prev'] . '

'; $down_row = $this->nowpage + 1;

$down_page = ($down_row <= $this->totalpages) ? 'url($down_row) . '">' . $this->config['next'] . '

' : '' . $this->config['next'] . '

'; //第一頁

$the_first = '';

if($this->totalpages > $this->rollpage && ($this->nowpage - $now_cool_page) >= 1)

//最後一頁

$the_end = '';

if($this->totalpages > $this->rollpage && ($this->nowpage + $now_cool_page) < $this->totalpages)

//數字連線

$link_page = "";

for($i = 1; $i <= $this->rollpage; $i++)elseif(($this->nowpage + $now_cool_page - 1) >= $this->totalpages)else

if($page > 0 && $page != $this->nowpage)else

}else

}}

//替換分頁內容 //++++++++++ 這裡修改 樣式 ++++++++++++++++++

$page_str = str_replace(['%header%','%now_page%', '%up_page%', '%down_page%', '%first%', '%link_page%', '%end%', '%total_row%', '%total_page%','%list_rows%'],[$this->config['header'], $this->nowpage, $up_page, $down_page, $the_first, $link_page, $the_end, $this->totalrows, $this->totalpages,$this->listrows],$this->config['theme']);

return "";

}

二、具體使用

//頭部記得引入

use think\page;

//陣列分頁

//傳入分頁值

$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

]);//前端模板輸出

/* */

thinkphp 分頁(陣列分頁)

下面我把注釋寫清楚直接用就行,第乙個index方法是用於展示頁面的,page array是用來分頁的,show array是用來顯示頁碼的。public function index 陣列分頁函式 核心函式 array slice 用此函式之前要先將資料庫裡面的所有資料按一定的順序查詢出來存入陣列中...

thinkphp 分頁(陣列分頁)

categorybrandamount model brand getallbrandbyamount 獲取頁面傳過來的,get請求 page input page 定全域性變數 global countpage url根據自己的位址定義 url 這個是每頁顯示多少條 count 2 這裡是呼叫分頁...

ThinkPHP(6) 模板技術

判斷比較標籤 區間標籤 三元運算子 php 在如下圖所示目錄中建立html 然後在index控制器的index方法中,呼叫模板 那麼當你訪問 index index時就會顯示index.html。如果你不想要模板和方法同名,你可以在display方法中跟上模板名稱即可。如下圖 兩種方式賦值 clas...