Paginacja w CodeZapłonnik 4 z przykładem

⚡ Inteligentne podsumowanie

Paginacja w CodeIgniter dzieli duże zestawy wyników bazy danych na małe, łatwe w nawigacji strony za pomocą wbudowanej biblioteki paginacji. Ten przewodnik przedstawia działający przykład, który wysyła zapytanie do tabeli autorów, konfiguruje limity na stronę i renderuje numerowane linki nawigacyjne.

  • 🗂️. Główny cel: Paginacja pozwala podzielić obszerne wyniki zapytania na łatwiejsze do opanowania strony, co poprawia czytelność i skraca czas ładowania strony.
  • ⚙️ Konfiguracja biblioteki: Załaduj biblioteki paginacji i bazy danych, a następnie przekaż tablicę $config definiującą base_url, total_rows i per_page.
  • 🔢 Segment URI: Wartość uri_segment informuje CodeZapłonnik, który URL Segment zawiera przesunięcie używane do pomijania rekordów już wyświetlonych.
  • 🧱 Warstwa modelu: Model udostępnia funkcje get_count() i get_authors($limit, $start), dzięki czemu kontroler pobiera tylko wiersze potrzebne jednej stronie.
  • 🔗 Linki nawigacyjne: Metoda create_links() automatycznie generuje gotowe do stylizowania łącza poprzednie, numerowane i następne.
  • 🎨 Niestandardowa stylizacja: Klucze konfiguracyjne, takie jak full_tag_open i cur_tag_open, otaczają łącza własnymi klasami CSS lub znacznikami struktury.
  • 🤖 Asystent AI: Narzędzia AI potrafią zbudować szkielet modelu, kontrolera i tablicy $config na podstawie definicji tabeli, a następnie wyjaśnić każdą opcję.

Paginacja w CodeZapalnik

Bazy danych to żywe byty. Rozwijają się z upływem czasu. Projektując aplikacje, musimy wziąć pod uwagę liczbę rekordów, które użytkownicy będą musieli przeglądać. Paginacja pozwala nam podzielić wyniki na mniejsze, łatwiejsze w zarządzaniu części. Poniższy rysunek przedstawia przykład paginacji w… Google sprawdzić.

Paginacja w Codezapalnik

W tym samouczku dowiesz się, jak podzielić wyniki bazy danych na strony. CodeIgniter korzysta z biblioteki paginacji. Ten samouczek zakłada, że ​​znasz podstawy CodeIgniter Active Record. Jeśli jeszcze go nie znasz, możesz przeczytać poprzednie samouczki. Drugim założeniem jest to, że już pobrałeś/aś. CodeZapalnik.

Konfiguracja bazy danych

Zaczniemy od stworzenia bazy danych i umieszczenia w niej fikcyjnych rekordów. Będzie to jednotabelowa baza danych zawierająca 50 rekordów.

Uruchom następujący skrypt MySQL do utworzenia tabeli autorów bazy danych. Wstaw 50 fikcyjnych rekordów.

CREATE SCHEMA ci_pagination;
 
DROP TABLE IF EXISTS `authors`;
 
CREATE TABLE `authors` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`first_name` varchar(50) COLLATE utf8_unicode_ci NOT NULL,
`last_name` varchar(50) COLLATE utf8_unicode_ci NOT NULL,
`email` varchar(100) COLLATE utf8_unicode_ci NOT NULL,
`birthdate` date NOT NULL,
`added` timestamp NOT NULL DEFAULT current_timestamp(),
PRIMARY KEY (`id`),
UNIQUE KEY `email` (`email`)
) ENGINE=InnoDB AUTO_INCREMENT=101 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
INSERT INTO `authors` (`id`, `first_name`, `last_name`, `email`, `birthdate`, `added`) VALUES (1, 'Brielle', 'O\'Hara', 'alexandre67@example.com', '1974-05-21', '1999-09-17 19:17:28');
INSERT INTO `authors` (`id`, `first_name`, `last_name`, `email`, `birthdate`, `added`) VALUES (2, 'Flavio', 'Lehner', 'mafalda85@example.net', '1971-10-14', '1998-09-09 00:25:06');
INSERT INTO `authors` (`id`, `first_name`, `last_name`, `email`, `birthdate`, `added`) VALUES (3, 'Elmira', 'Johns', 'wellington52@example.org', '1983-11-28', '2015-02-07 15:56:43');
INSERT INTO `authors` (`id`, `first_name`, `last_name`, `email`, `birthdate`, `added`) VALUES (4, 'Elza', 'Mitchell', 'marisol46@example.org', '1989-03-08', '1992-08-21 00:21:39');
INSERT INTO `authors` (`id`, `first_name`, `last_name`, `email`, `birthdate`, `added`) VALUES (5, 'Viva', 'Greenfelder', 'era94@example.com', '1995-04-17', '2017-04-30 05:55:39');
INSERT INTO `authors` (`id`, `first_name`, `last_name`, `email`, `birthdate`, `added`) VALUES (6, 'Maxwell', 'VonRueden', 'mcassin@example.net', '1994-07-01', '1996-05-08 23:30:14');
INSERT INTO `authors` (`id`, `first_name`, `last_name`, `email`, `birthdate`, `added`) VALUES (7, 'Deontae', 'Becker', 'rory.kub@example.org', '1992-02-19', '2017-07-22 11:49:15');
INSERT INTO `authors` (`id`, `first_name`, `last_name`, `email`, `birthdate`, `added`) VALUES (8, 'Sylvester', 'Christiansen', 'erohan@example.org', '1990-09-03', '2004-05-08 08:15:37');
INSERT INTO `authors` (`id`, `first_name`, `last_name`, `email`, `birthdate`, `added`) VALUES (9, 'Torrey', 'Strosin', 'adams.luciano@example.net', '1999-10-09', '2009-08-30 21:30:44');
INSERT INTO `authors` (`id`, `first_name`, `last_name`, `email`, `birthdate`, `added`) VALUES (10, 'Kelli', 'Smitham', 'daniel.catalina@example.com', '2012-11-07', '1986-01-22 20:52:57');
INSERT INTO `authors` (`id`, `first_name`, `last_name`, `email`, `birthdate`, `added`) VALUES (11, 'Abigale', 'Schuppe', 'andreanne.hayes@example.net', '2018-02-18', '1994-05-07 06:26:36');
INSERT INTO `authors` (`id`, `first_name`, `last_name`, `email`, `birthdate`, `added`) VALUES (12, 'Letha', 'Gleason', 'eldridge.heaney@example.net', '2009-02-06', '1998-05-25 04:37:54');
INSERT INTO `authors` (`id`, `first_name`, `last_name`, `email`, `birthdate`, `added`) VALUES (13, 'Sienna', 'Upton', 'monique57@example.org', '2017-08-17', '2009-08-08 19:08:10');
INSERT INTO `authors` (`id`, `first_name`, `last_name`, `email`, `birthdate`, `added`) VALUES (14, 'Harley', 'Gutkowski', 'breilly@example.net', '1987-11-30', '1998-07-31 11:08:01');
INSERT INTO `authors` (`id`, `first_name`, `last_name`, `email`, `birthdate`, `added`) VALUES (15, 'Lois', 'Bednar', 'hpouros@example.net', '2002-02-11', '2001-07-26 15:04:16');
INSERT INTO `authors` (`id`, `first_name`, `last_name`, `email`, `birthdate`, `added`) VALUES (16, 'Gail', 'McDermott', 'reina.kerluke@example.com', '1987-03-30', '2004-12-15 20:38:29');
INSERT INTO `authors` (`id`, `first_name`, `last_name`, `email`, `birthdate`, `added`) VALUES (17, 'Sydney', 'Strosin', 'dweber@example.net', '1985-04-29', '2010-08-07 08:50:35');
INSERT INTO `authors` (`id`, `first_name`, `last_name`, `email`, `birthdate`, `added`) VALUES (18, 'Anne', 'Cremin', 'fritz.schmitt@example.com', '1976-02-15', '1980-03-25 05:29:41');
INSERT INTO `authors` (`id`, `first_name`, `last_name`, `email`, `birthdate`, `added`) VALUES (19, 'Norberto', 'Bergnaum', 'franecki.javon@example.net', '1971-03-11', '1993-03-20 23:36:25');
INSERT INTO `authors` (`id`, `first_name`, `last_name`, `email`, `birthdate`, `added`) VALUES (20, 'Arvid', 'Johns', 'pschultz@example.org', '2016-01-03', '1995-04-30 17:07:15');
INSERT INTO `authors` (`id`, `first_name`, `last_name`, `email`, `birthdate`, `added`) VALUES (21, 'Bernita', 'Fay', 'arne96@example.org', '1983-12-26', '1987-02-23 16:55:28');
INSERT INTO `authors` (`id`, `first_name`, `last_name`, `email`, `birthdate`, `added`) VALUES (22, 'Gonzalo', 'Gorczany', 'velma.huels@example.com', '1987-10-19', '2016-10-18 19:25:46');
INSERT INTO `authors` (`id`, `first_name`, `last_name`, `email`, `birthdate`, `added`) VALUES (23, 'Jackie', 'Klein', 'gretchen.howe@example.com', '1971-01-20', '2010-11-16 02:58:05');
INSERT INTO `authors` (`id`, `first_name`, `last_name`, `email`, `birthdate`, `added`) VALUES (24, 'Andrew', 'Kessler', 'collins.faye@example.org', '1984-08-07', '1971-12-15 08:46:42');
INSERT INTO `authors` (`id`, `first_name`, `last_name`, `email`, `birthdate`, `added`) VALUES (25, 'Claire', 'Hudson', 'madalyn.wunsch@example.org', '1984-12-19', '1991-07-04 14:35:53');
INSERT INTO `authors` (`id`, `first_name`, `last_name`, `email`, `birthdate`, `added`) VALUES (26, 'Prudence', 'Runte', 'koch.laurie@example.net', '2008-12-27', '1985-09-30 04:57:55');
INSERT INTO `authors` (`id`, `first_name`, `last_name`, `email`, `birthdate`, `added`) VALUES (27, 'Destinee', 'Romaguera', 'tromp.tiffany@example.com', '1978-11-09', '1997-11-09 19:58:08');
INSERT INTO `authors` (`id`, `first_name`, `last_name`, `email`, `birthdate`, `added`) VALUES (28, 'Marianna', 'Harvey', 'clovis.schuppe@example.com', '2013-08-28', '1990-08-06 19:29:19');
INSERT INTO `authors` (`id`, `first_name`, `last_name`, `email`, `birthdate`, `added`) VALUES (29, 'Eloy', 'Lakin', 'wmorissette@example.net', '1989-12-08', '1974-03-16 03:21:16');
INSERT INTO `authors` (`id`, `first_name`, `last_name`, `email`, `birthdate`, `added`) VALUES (30, 'Rubie', 'McClure', 'haley.louisa@example.net', '1987-09-12', '1998-07-02 10:45:36');
INSERT INTO `authors` (`id`, `first_name`, `last_name`, `email`, `birthdate`, `added`) VALUES (31, 'Marisa', 'Stracke', 'zachary76@example.org', '1975-05-28', '1975-03-19 00:57:35');
INSERT INTO `authors` (`id`, `first_name`, `last_name`, `email`, `birthdate`, `added`) VALUES (32, 'Jacey', 'Beatty', 'dahlia.hermann@example.org', '1979-12-17', '1971-01-21 16:50:58');
INSERT INTO `authors` (`id`, `first_name`, `last_name`, `email`, `birthdate`, `added`) VALUES (33, 'Idella', 'Ruecker', 'elda.reichert@example.com', '2009-09-15', '1996-04-19 22:27:31');
INSERT INTO `authors` (`id`, `first_name`, `last_name`, `email`, `birthdate`, `added`) VALUES (34, 'Dimitri', 'Bednar', 'freida.parker@example.org', '1998-12-02', '2008-12-30 23:29:57');
INSERT INTO `authors` (`id`, `first_name`, `last_name`, `email`, `birthdate`, `added`) VALUES (35, 'Elfrieda', 'Smitham', 'padberg.rex@example.org', '2018-07-23', '1972-04-01 07:52:25');
INSERT INTO `authors` (`id`, `first_name`, `last_name`, `email`, `birthdate`, `added`) VALUES (36, 'Dwight', 'Walter', 'gmosciski@example.org', '2016-08-15', '1994-07-02 11:06:55');
INSERT INTO `authors` (`id`, `first_name`, `last_name`, `email`, `birthdate`, `added`) VALUES (37, 'Macie', 'Fay', 'uschuppe@example.net', '1976-01-29', '2005-12-13 18:44:46');
INSERT INTO `authors` (`id`, `first_name`, `last_name`, `email`, `birthdate`, `added`) VALUES (38, 'Lori', 'Kshlerin', 'mhansen@example.net', '1983-04-08', '1986-01-18 16:03:52');
INSERT INTO `authors` (`id`, `first_name`, `last_name`, `email`, `birthdate`, `added`) VALUES (39, 'Jeffry', 'Paucek', 'alisha35@example.net', '2002-10-02', '2004-03-29 07:06:03');
INSERT INTO `authors` (`id`, `first_name`, `last_name`, `email`, `birthdate`, `added`) VALUES (40, 'Yvonne', 'Bernhard', 'jaqueline21@example.net', '2017-11-04', '1986-12-15 23:55:23');
INSERT INTO `authors` (`id`, `first_name`, `last_name`, `email`, `birthdate`, `added`) VALUES (41, 'Ludwig', 'Heathcote', 'marcelino.kirlin@example.org', '1981-02-09', '2000-08-02 20:45:48');
INSERT INTO `authors` (`id`, `first_name`, `last_name`, `email`, `birthdate`, `added`) VALUES (42, 'Jadyn', 'Wiegand', 'georgianna.swift@example.net', '1982-06-16', '1980-12-05 13:09:37');
INSERT INTO `authors` (`id`, `first_name`, `last_name`, `email`, `birthdate`, `added`) VALUES (43, 'Ferne', 'Smitham', 'melany22@example.com', '1996-12-17', '1984-11-18 19:26:27');
INSERT INTO `authors` (`id`, `first_name`, `last_name`, `email`, `birthdate`, `added`) VALUES (44, 'Meta', 'Corkery', 'xharber@example.com', '1972-03-31', '2007-01-20 00:07:31');
INSERT INTO `authors` (`id`, `first_name`, `last_name`, `email`, `birthdate`, `added`) VALUES (45, 'Toni', 'Wolf', 'wyman.crystal@example.org', '2012-04-15', '1973-06-22 12:14:37');
INSERT INTO `authors` (`id`, `first_name`, `last_name`, `email`, `birthdate`, `added`) VALUES (46, 'Zack', 'Luettgen', 'deion.konopelski@example.org', '2003-05-29', '2018-11-19 05:03:21');
INSERT INTO `authors` (`id`, `first_name`, `last_name`, `email`, `birthdate`, `added`) VALUES (47, 'Kameron', 'Dietrich', 'ronaldo.torphy@example.com', '1973-05-20', '1974-09-16 20:27:17');
INSERT INTO `authors` (`id`, `first_name`, `last_name`, `email`, `birthdate`, `added`) VALUES (48, 'Zetta', 'Lebsack', 'timmothy.vandervort@example.com', '1996-11-04', '2001-03-06 01:33:01');
INSERT INTO `authors` (`id`, `first_name`, `last_name`, `email`, `birthdate`, `added`) VALUES (49, 'Benny', 'Hane', 'leone.lueilwitz@example.net', '2008-02-02', '2006-01-27 22:12:39');
INSERT INTO `authors` (`id`, `first_name`, `last_name`, `email`, `birthdate`, `added`) VALUES (50, 'Evans', 'Gleason', 'ccummerata@example.org', '1999-09-09', '1990-09-26 17:50:11');

Teraz, gdy pomyślnie utworzyliśmy naszą bazę danych i wstawiliśmy do niej rekordy fikcyjnych, skonfigurujmy ją CodeAplikacja Igniter do komunikacji z bazą danych.

Otwórz aplikację/config/database.php

Ustaw parametry połączenia z bazą danych w sposób podobny do poniższego

$db['default'] = array(
'dsn' => '',
'hostname' => 'localhost',
'username' => 'root',
'password' => 'melody',
'database' => 'ci_pagination',
'dbdriver' => 'mysqli',
'dbprefix' => '',
'pconnect' => FALSE,
'db_debug' => (ENVIRONMENT !== 'production'),
'cache_on' => FALSE,
'cachedir' => '',
'char_set' => 'utf8',
'dbcollat' => 'utf8_general_ci',
'swap_pre' => '',
'encrypt' => FALSE,
'compress' => FALSE,
'stricton' => FALSE,
'failover' => array(),
'save_queries' => TRUE
);

TUTAJ,

  • 'hostname' => 'localhost', ustawia nazwę hosta bazy danych
  • 'username' => 'root', określa nazwę użytkownika bazy danych
  • 'password' => 'melody', ustawia hasło do bazy danych
  • 'database' => 'ci_pagination', określa nazwę bazy danych.

Będziemy również automatycznie ładować bibliotekę bazy danych podczas uruchamiania naszej aplikacji. Zróbmy to. Otwórz plik application/config/autoload.php.

Załaduj bibliotekę bazy danych, jak pokazano w poniższym kodzie

$autoload['libraries'] = array('database');

To tyle, jeśli chodzi o konfigurację bazy danych.

Przyjrzyjmy się teraz modelowi bazy danych dla paginacji.

CodeModel bazy danych paginacji Igniter

Utwórz nowy model Authors_model w aplikacji/modelach

Dodaj następujący kod

<?php
 
class Authors_model extends CI_Model {
 
protected $table = 'authors';
 
public function __construct() {
parent::__construct();
}
 
public function get_count() {
return $this->db->count_all($this->table);
}
 
public function get_authors($limit, $start) {
$this->db->limit($limit, $start);
$query = $this->db->get($this->table);
 
return $query->result();
}
}

TUTAJ,

  • protected $table = 'authors'; definiuje chronioną zmienną, która przechowuje nazwę tabeli bazy danych dla modelu
  • funkcja publiczna __construct() {…} wywołuje metodę konstruktora nadrzędnego
  • Funkcja publiczna get_count() {…} zwraca całkowitą liczbę rekordów w tabeli bazy danych. Jest to niezbędne do paginacji.
  • Funkcja publiczna get_authors($limit, $start) {…} definiuje metodę, która zostanie użyta do pobrania stronicowanych wyników z bazy danych. Przekazujemy limit i punkt startowy. Limit definiuje całkowitą liczbę rekordów do zwrócenia, a start definiuje liczbę rekordów, które należy pominąć.

To wszystko, jeśli chodzi o nasz model bazy danych. Teraz utwórzmy trasy, które będą reagować na nasze podzielone na strony wyniki.

CodeTrasy paginacji Igniter

Otwórz plik tras w application/config/routes.php

Dodaj następującą trasę

$route['authors/(:num)'] = 'authors';

TUTAJ,

  • Definiujemy trasę „authors”, która akceptuje opcjonalny parametr w postaci liczby. Opcjonalny parametr jest definiowany za pomocą nawiasów otwierających i zamykających. Zdefiniowana trasa wywołuje metodę index w kontrolerze „authors”.

Przejdźmy teraz do kontrolera naszych podzielonych na strony wyników.

CodeKontroler stronicowania Igniter

Utwórz nowy plik Authors.php w katalogu application/controllers

Dodaj następujący kod

<?php defined('BASEPATH') OR exit('No direct script access allowed');
 
class Authors extends CI_Controller {
 
public function __construct() {
parent:: __construct();
 
$this->load->helper('url');
$this->load->model('authors_model');
$this->load->library("pagination");
}
 
public function index() {
$config = array();
$config["base_url"] = base_url() . "authors";
$config["total_rows"] = $this->authors_model->get_count();
$config["per_page"] = 10;
$config["uri_segment"] = 2;
 
$this->pagination->initialize($config);
 
$page = ($this->uri->segment(2)) ? $this->uri->segment(2) : 0;
 
$data["links"] = $this->pagination->create_links();
 
$data['authors'] = $this->authors_model->get_authors($config["per_page"], $page);
 
$this->load->view('authors/index', $data);
}
}

TUTAJ,

  • class Authors rozszerza klasę CI_Controller {…} definiujemy klasę Authors, która rozszerza klasę CI_Controller
  • funkcja publiczna __construct() {…} ta metoda inicjuje konstruktor nadrzędny i ładuje pomocnika adresu URL, model autora i bibliotekę paginacji.
  • funkcja publiczna indeks() {…} definiuje metodę, która odpowiada naszym autorom tras
    • $config[“base_url”] = base_url() . “authors”; ustawia paginację URL który będzie używany do generowania linków paginacyjnych
    • $config[“total_rows”] = $this->authors_model->get_count(); ustawia całkowitą liczbę wierszy, które należy podzielić na strony. Wartość jest pobierana z modelu autorów poprzez wywołanie metody get_count.
    • $config[“per_page”] = 10; definiuje wiersze, które muszą być wyświetlane na każdej stronie
    • $config[“uri_segment”] = 2; określa URL segment zawierający wartość, która będzie używana do pomijania rekordów
    • $this->pagination->initialize($config); inicjuje bibliotekę stronicowania przy użyciu wartości tablicy konfiguracyjnej, którą zdefiniowaliśmy
    • $page = ($this->uri->segment(2)) ? $this->uri->segment(2) : 0; sprawdza, czy numer pominięcia został ustawiony w drugim segmencie URI, a jeśli nie jest ustawiony, to zmiennej $page przypisywana jest wartość 0
    • $data[„links”] = $this->pagination->create_links(); tworzy łącza do stronicowania i przypisuje je do klucza linków zmiennej tablicowej $data.
    • $data['authors'] = $this->authors_model->get_authors($config[“per_page”], $page); pobiera podzielone na strony rekordy autorów i przypisuje je do klucza authors zmiennej tablicowej $data
    • $this->load->view('autorzy/indeks', $data); ładuje widok indeksu w katalogu autorów i przekazuje zmienną tablicową $data.

To wszystko, jeśli chodzi o nasz kontroler. Teraz utwórzmy widok, który będzie wyświetlał wyniki z naszej bazy danych.

Utwórz nowy katalog autorów w aplikacji/widokach

Utwórz nowy plik indeks.php w application/views/authors/index.php

Dodaj następujący kod

<!DOCTYPE html>
<html>
<head>
<title>CodeIgniter Pagination</title>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link rel="stylesheet" href="https:0
</head>
<body>
<div class="container">
<h3 class="title is-3">CodeIgniter Database Pagination</h3>
<div class="column">
<table class="table is-bordered is-striped is-narrow is-hoverable is-fullwidth">
<thead>
<tr>
<th>ID</th>
<th>Contact Name</th>
<th>Contact Number</th>
<th>Email</th>
<th>City</th>
</tr>
</thead>
<tbody>
<?php foreach ($authors as $author): ?>
<tr>
<td><?= $author->id ?></td>
<td><?= $author->first_name ?></td>
<td><?= $author->last_name ?></td>
<td><?= $author->email ?></td>
<td><?= $author->birthdate ?></td>
</tr>
<?php endforeach; ?>
</tbody>
</table>
<p><?php echo $links; ?></p>
</div>
</div>
</body>
</html>

TUTAJ,

  • pętla przechodzi przez wyniki zmiennej $authors i drukuje wyniki w tabeli
  • drukuje linki do stronicowania na dole naszej tabeli.

Uruchommy teraz naszą aplikację i sprawdźmy wyniki.

W tym samouczku używamy wbudowanego serwera WWW PHP, ale możesz użyć dowolnego serwera WWW, który obsługuje PHP.

Otwórz terminal

Uruchom następujące polecenie

cd C:\Sites\ci-app
php -S localhost:3000

TUTAJ,

  • Powyższe polecenie powoduje przejście do katalogu z kodem aplikacji i uruchomienie wbudowanego serwera na porcie 3000.

Uwaga: ścieżka aplikacji musi być taka sama, jak ścieżka, do której ją pobrano CodeIgniter. Możesz użyć dowolnego numeru portu, który jest wolny na Twoim komputerze. Nie musisz używać portu 3000.

Otwórz przeglądarkę internetową i załaduj następujące dane URL

http://localhost:3000/authors

Powinieneś być w stanie uzyskać wyniki podobne do poniższych

CodeKontroler stronicowania Igniter

Jak dostosować CodeLinki do paginacji Igniter

Domyślnie metoda create_links() generuje proste znaczniki kotwic. Możesz umieścić te linki we własnym kodzie, aby pasowały do ​​struktury CSS, takiej jak Bootstrap lub Bulma. Dodaj klucze stylów do tej samej tablicy $config przed wywołaniem initialize().

$config['full_tag_open'] = '<nav><ul class="pagination">';
$config['full_tag_close'] = '</ul></nav>';
$config['num_tag_open'] = '<li class="page-item">';
$config['num_tag_close'] = '</li>';
$config['cur_tag_open'] = '<li class="page-item active"><a class="page-link">';
$config['cur_tag_close'] = '</a></li>';
$config['next_link'] = 'Next &raquo;';
$config['prev_link'] = '&laquo; Previous';

Poniżej opisano najbardziej przydatne klucze konfiguracyjne.

  • pełne_otwarcie_znacznika / pełne_zamknięcie_znacznika: znacznik obejmujący cały zestaw linków, idealny dla Lub pojemnik.
  • liczba_otworzeń_znacznika / liczba_zamknięć_znacznika: znaczniki wokół każdego linku do ponumerowanej strony.
  • cur_tag_open / cur_tag_close: znaczniki wokół numeru bieżącej, aktywnej strony.
  • następny_link / poprzedni_link: tekst lub symbole używane dla przycisków Dalej i Poprzedni.

Ponieważ styl jest w całości zawarty w konfiguracji, możesz zmienić styl paginacji w całej aplikacji, edytując pojedynczą tablicę, bez konieczności modyfikowania logiki kontrolera.

FAQ

Wartość per_page określa, ile rekordów pojawia się na jednej stronie, natomiast uri_segment określa, CodeZapłonnik, który URL Segment zawiera numer przesunięcia. Razem kontrolują liczbę wyświetlanych wierszy i to, która strona zostanie załadowana.

Zwykle wartość uri_segment nie odpowiada pozycji przesunięcia w Twoim URL. Policz segmenty po swojej domenie i ustaw uri_segment na tę liczbę, aby create_links() odczytał prawidłowe przesunięcie strony.

Tak. Paginacja wymaga jedynie liczby total_rows i wartości per_page. Możesz paginować tablice, wyniki API lub pliki, podając sumę ręcznie i samodzielnie dzieląc dane dla każdej strony.

Tak. Mając nazwę tabeli i kolumny, AI może wygenerować model, tablicę $config i metodę index() kontrolera. RevSprawdź wartości base_url i uri_segment, a następnie przetestuj wygenerowane linki.

Tak. Wklej kontroler i URL struktura, a AI może wykryć niedopasowane wartości uri_segment, brakujące ukośniki base_url lub nieprawidłowe źródło total_rows i następnie zaproponować poprawioną konfigurację do wypróbowania.

Podsumuj ten post następująco: