Rumah  >  Artikel  >  rangka kerja php  >  Bagaimana untuk melaksanakan fungsi paging ThinkPHP6

Bagaimana untuk melaksanakan fungsi paging ThinkPHP6

WBOY
WBOYasal
2023-06-20 21:15:142571semak imbas

ThinkPHP ialah rangka kerja pembangunan PHP yang sangat popular, dan versi terbarunya, ThinkPHP6, telah dipertingkatkan dari segi prestasi dan kemudahan penggunaan. Fungsi paging adalah fungsi yang sangat biasa dalam pembangunan web, dan ThinkPHP6 juga menyediakan kaedah paging yang sangat mudah. Artikel ini akan memperkenalkan cara melaksanakan fungsi paging ThinkPHP6.

1 Fahami fungsi paging

Dalam aplikasi web, apabila set data sangat besar, memaparkan semua hasil pada satu halaman akan menyebabkan halaman dimuatkan terlalu perlahan, dan ia juga akan menyebabkan halaman dimuatkan terlalu perlahan. Adalah menyusahkan pengguna untuk melihat dan mengurus data. Fungsi halaman adalah untuk membahagikan set data kepada beberapa halaman, dan setiap halaman hanya memaparkan sebahagian daripada data. Ini boleh mengurangkan masa memuatkan halaman dengan banyak, di samping memudahkan pengguna menyemak imbas dan mengurus data.

2. Laksanakan fungsi paging ThinkPHP6

ThinkPHP6 menyediakan kaedah paging yang sangat mudah, yang boleh dilaksanakan dalam beberapa langkah mudah.

  1. Pasang komponen Penomboran

ThinkPHP6 menyediakan komponen Penomboran Anda perlu menambah kod berikut pada fail composer.json:

"require": {
    "topthink/think-pagination": "^1.0"
}

Kemudian. gunakan arahancomposer updatePasang komponen.

  1. Menggunakan paging dalam pengawal

Langkah-langkah untuk menggunakan paging dalam pengawal adalah seperti berikut:

Pertama, dapatkan jumlah bilangan rekod dalam jadual data. Gunakan kod berikut:

$total = Db::name('user')->count();

Antaranya, Db ialah kelas operasi pangkalan data dalam ThinkPHP6, name('user') bermaksud untuk mendapatkan data jadual pengguna, dan count() bermaksud untuk mendapatkan jumlah nombor. daripada data.

Seterusnya, tetapkan bilangan rekod yang dipaparkan pada setiap halaman dan nombor halaman semasa. Gunakan kod berikut:

$pageSize = 10;   //每页显示10条记录
$pageNo = 1;      //默认显示第1页
if (!empty($_GET['page'])) {
    $pageNo = intval($_GET['page']);   //获取当前页码数
}

Di mana, fungsi intval() digunakan untuk menukar rentetan kepada integer.

Seterusnya, kira julat rekod yang perlu dipaparkan berdasarkan bilangan rekod yang dipaparkan pada setiap halaman dan nombor halaman semasa. Gunakan kod berikut:

$offset = ($pageNo - 1) * $pageSize;
$rows = Db::name('user')->limit($offset, $pageSize)->select();

Antaranya, kaedah had() digunakan untuk mengehadkan julat hasil pertanyaan Parameter pertama mewakili offset, dan parameter kedua mewakili bilangan rekod yang diperoleh.

Akhir sekali, hantar rekod yang diperoleh kepada paparan dan panggil komponen Penomboran untuk paparan halaman. Gunakan kod berikut:

$this->assign('rows', $rows);
$this->assign('total', $total);
$this->assign('pageSize', $pageSize);
$this->assign('pageNo', $pageNo);
return $this->fetch()->extend('pagination');

Antaranya, kaedah assign() digunakan untuk menghantar pembolehubah kepada templat, kaedah fetch() digunakan untuk memanggil fail templat, dan extend('penomboran') bermaksud untuk menggunakan komponen Penomboran untuk paparan penomboran.

  1. Melaksanakan paging dalam paparan

Langkah-langkah untuk melaksanakan paging dalam fail paparan adalah seperti berikut:

Mula-mula, paparkan bar paging di bahagian bawah halaman. Gunakan kod berikut:

<div class="pagination">
    {$page->render()}
</div>

di mana $page mewakili tika Penomboran, dan kaedah render() digunakan untuk menjana kod HTML penomboran.

Seterusnya, tetapkan gaya paging. Gunakan kod berikut:

    hinkacadeView::getPager()->setConfig('prev', '上一页');
    hinkacadeView::getPager()->setConfig('next', '下一页');
    hinkacadeView::getPager()->setConfig('theme', '%totalRow% %header% %upPage% %downPage% %first% %prePage% %linkPage% %nextPage% %end%');

Antaranya, kaedah setConfig() digunakan untuk menetapkan gaya halaman. %totalRow% mewakili jumlah bilangan rekod yang dipaparkan, %header% mewakili nombor halaman semasa, %upPage% mewakili halaman sebelumnya, %downPage% mewakili halaman seterusnya, %first% mewakili halaman pertama, %prePage% mewakili sebelumnya nombor halaman, % linkPage% mewakili kumpulan nombor halaman semasa, %nextPage% mewakili kumpulan nombor halaman seterusnya dan %end% mewakili halaman terakhir.

Nota: Sebelum menetapkan gaya halaman, anda perlu memanggil ruang nama use thinkPaginator;.

  1. Contoh kod lengkap

Berikut ialah contoh kod lengkap untuk melaksanakan fungsi paging ThinkPHP6:

use thinkDb;
use thinkPaginator;

class UserController extends Controller
{
    public function index()
    {
        $total = Db::name('user')->count();
        $pageSize = 10;   //每页显示10条记录
        $pageNo = 1;      //默认显示第1页
        if (!empty($_GET['page'])) {
            $pageNo = intval($_GET['page']);   //获取当前页码数
        }
        $offset = ($pageNo - 1) * $pageSize;
        $rows = Db::name('user')->limit($offset, $pageSize)->select();
        $this->assign('rows', $rows);
        $this->assign('total', $total);
        $this->assign('pageSize', $pageSize);
        $this->assign('pageNo', $pageNo);
        Paginator::useBootstrap();
        Paginator::currentPageResolver(function () use ($pageNo) {
            return $pageNo;
        });
        Paginator::pagination($total, $pageSize, $pageNo);
            hinkacadeView::getPager()->setConfig('prev', '上一页');
            hinkacadeView::getPager()->setConfig('next', '下一页');
            hinkacadeView::getPager()->setConfig('theme', '%totalRow% %header% %upPage% %downPage% %first% %prePage% %linkPage% %nextPage% %end%');
        return $this->fetch()->extend('pagination');
    }
}

3 🎜>Lulus Dalam langkah di atas, kami berjaya melaksanakan fungsi paging ThinkPHP6. Saya percaya bahawa melalui pengenalan dalam artikel ini, pembaca boleh dengan mudah menambah fungsi paging ke laman web mereka dan meningkatkan pengalaman pengguna laman web tersebut.

Atas ialah kandungan terperinci Bagaimana untuk melaksanakan fungsi paging ThinkPHP6. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn