Die Verwendung eines Full-Stack-Webanwendungsframeworks hat den Vorteil, dass Sie sich nicht um die üblichen Aufgaben wie Eingabeverarbeitung, Formularüberprüfung und Ähnliches kümmern müssen, da das Framework bereits Wrapper für diese Features bereitstellt. Auf diese Weise können Sie sich auf die Geschäftslogik der Anwendung konzentrieren, anstatt das Rad immer wieder neu zu erfinden.
Heute werden wir eine wichtige Bibliothek im CodeIgniter-Framework erkunden - die Paginierungsbibliothek.
Lassen Sie mich die Themen hervorheben, die wir in diesem Artikel behandeln werden:
In diesem Abschnitt gehen wir ein Beispiel durch, das die Verwendung von Paginierung in CodeIgniter veranschaulicht. Es ist der beste Weg, um zu verstehen, wie die Dinge insgesamt funktionieren.
In unserem Beispiel erstellen wir eine ziemlich einfache Benutzerliste, in der Datensätze aus der MySQL-Tabelle des Benutzers abgerufen werden. Um dieses Beispiel erfolgreich auszuführen, stellen Sie sicher, dass Sie über die uid
und dein Name
Felder in Ihrer Benutzertabelle.
Damit sind wir bereit zu rollen.
Fahren Sie fort und erstellen Sie eine Controller-Datei Steuerungen / Paging.php
mit folgenden Inhalten.
load-> library ("Paginierung"); // Lade URL-Helfer $ this-> load-> helper ('url'); public function index () // load db und model $ this-> load-> database (); $ this-> load-> model ('Benutzer'); // init params $ params = array (); $ limit_per_page = 1; $ start_index = ($ this-> uri-> segment (3))? $ this-> uri-> segment (3): 0; $ total_records = $ this-> Users-> get_total (); if ($ total_records> 0) // Aktuelle Datensätze abrufen $ params ["results"] = $ this-> Users-> get_current_page_records ($ limit_per_page, $ start_index); $ config ['base_url'] = base_url (). 'paging / index'; $ config ['total_rows'] = $ total_records; $ config ['per_page'] = $ limit_per_page; $ config ["uri_segment"] = 3; $ this-> pagination-> initialize ($ config); // Paging-Links erstellen $ params ["links"] = $ this-> pagination-> create_links (); $ this-> load-> view ('user_listing', $ params); public function custom () // load db und model $ this-> load-> database (); $ this-> load-> model ('Benutzer'); // init params $ params = array (); $ limit_per_page = 2; $ page = ($ this-> uri-> segment (3))? ($ this-> uri-> segment (3) - 1): 0; $ total_records = $ this-> Users-> get_total (); if ($ total_records> 0) // Aktuelle Datensätze abrufen $ params ["results"] = $ this-> Users-> get_current_page_records ($ limit_per_page, $ page * $ limit_per_page); $ config ['base_url'] = base_url (). 'paging / custom'; $ config ['total_rows'] = $ total_records; $ config ['per_page'] = $ limit_per_page; $ config ["uri_segment"] = 3; // Benutzerdefinierte Paging-Konfiguration $ config ['num_links'] = 2; $ config ['use_page_numbers'] = TRUE; $ config ['reuse_query_string'] = TRUE; $ config ['full_tag_open'] = ''; $ config ['full_tag_close'] = ''; $ config ['first_link'] = 'Erste Seite'; $ config ['first_tag_open'] = ''; $ config ['first_tag_close'] = ''; $ config ['last_link'] = 'Letzte Seite'; $ config ['last_tag_open'] = ''; $ config ['last_tag_close'] = ''; $ config ['next_link'] = 'Nächste Seite'; $ config ['next_tag_open'] = ''; $ config ['next_tag_close'] = ''; $ config ['prev_link'] = 'Vorherige Seite'; $ config ['prev_tag_open'] = ''; $ config ['prev_tag_close'] = ''; $ config ['cur_tag_open'] = ''; $ config ['cur_tag_close'] = ''; $ config ['num_tag_open'] = ''; $ config ['num_tag_close'] = ''; $ this-> pagination-> initialize ($ config); // Paging-Links erstellen $ params ["links"] = $ this-> pagination-> create_links (); $ this-> load-> view ('user_listing', $ params);
Als nächstes benötigen wir eine Modelldatei models / Benutzer.php
das holt Datensätze aus der Benutzertabelle.
db-> limit ($ limit, $ start); $ query = $ this-> db-> get ("Benutzer"); if ($ query-> num_rows ()> 0) foreach ($ query-> result () als $ row) $ data [] = $ row; Rückgabe von $ data; falsch zurückgeben; public function get_total () return $ this-> db-> count_all ("Benutzer");
Schließlich erstellen wir eine Ansichtsdatei unter views / user_listing.php
das zeigt die Benutzerliste an.
Paging-Beispiel - Benutzerliste Benutzerliste
ICH WÜRDE NAME uid?> uname?> Keine Benutzer gefunden.
Greifen Sie jetzt auf unsere benutzerdefinierte Seite unter http: // Ihre-Code-Igniter-Site / Paging / Index zu und Sie sollten die Benutzerliste zusammen mit der Paginierung sehen! Das ist es also, wir haben es geschafft! Keine Sorge, ich werde dich nicht so bald verlassen, da wir jetzt jeden Teil des Codes analysieren.
Wir beginnen mit der Modelldatei models / Benutzer.php
da dies etwas von unseren Controller-Methoden genannt wird. Es gibt zwei wichtige Methoden, get_current_page_records
und get_total
, dass unser Modell implementiert, um die Paginierungslinks aufzubauen.
Lass uns durch gehen get_total
Methode. Es wird verwendet, um die Anzahl der Datensätze in der Benutzertabelle zu zählen.
public function get_total () return $ this-> db-> count_all ("Benutzer");
Als nächstes gibt es eine get_current_page_records
Methode.
öffentliche Funktion get_current_page_records ($ limit, $ start) $ this-> db-> limit ($ limit, $ start); $ query = $ this-> db-> get ("Benutzer"); if ($ query-> num_rows ()> 0) foreach ($ query-> result () als $ row) $ data [] = $ row; Rückgabe von $ data; falsch zurückgeben;
Es gibt zwei wichtige Argumente, die Sie im Dokument beachten sollten get_current_page_records
Methode. Das erste Argument, $ limit
, wird verwendet, um die Anzahl der Datensätze anzugeben, die beim Abfragelauf zurückgegeben werden. Und das zweite Argument, $ start
, fungiert als Startindex des Datensatzes.
Wie Sie sehen können, geben Sie die Werte von an $ start
und $ limit
Wir können Datensätze pro Seite abrufen. Das ist die Essenz des Paging, und mittlerweile haben wir die wichtigste Methode dieses Artikels implementiert!
Das war also unser Modell - einfach und elegant!
Lassen Sie uns auf die Controller-Datei aufmerksam werden. Holen Sie sich den Code der Konstruktormethode.
öffentliche Funktion __construct () parent :: __ construct (); // Lade Paginierungsbibliothek $ this-> load-> library ('pagination'); // Lade URL-Helfer $ this-> load-> helper ('url');
Um die Paginierung in CodeIgniter verwenden zu können, müssen Sie zunächst die Paginierungsbibliothek laden. Und wir können es mit machen $ this-> load-> library ('Paginierung')
.
Wir haben auch den URL-Helfer geladen, damit globale Helferfunktionen, die von diesem Helfer bereitgestellt werden, verwendet werden können.
Jetzt sind wir bereit, durch das Herz unseres Controllers zu gehen Index
Methode.
public function index () // load db und model $ this-> load-> database (); $ this-> load-> model ('Benutzer'); // init params $ params = array (); $ limit_per_page = 1; $ start_index = ($ this-> uri-> segment (3))? $ this-> uri-> segment (3): 0; $ total_records = $ this-> Users-> get_total (); if ($ total_records> 0) // Aktuelle Datensätze abrufen $ params ["results"] = $ this-> Users-> get_current_page_records ($ limit_per_page, $ start_index); $ config ['base_url'] = base_url (). 'paging / index'; $ config ['total_rows'] = $ total_records; $ config ['per_page'] = $ limit_per_page; $ config ["uri_segment"] = 3; $ this-> pagination-> initialize ($ config); // Paging-Links erstellen $ params ["links"] = $ this-> pagination-> create_links (); $ this-> load-> view ('user_listing', $ params);
Zunächst stellen wir sicher, dass die Datenbank ordnungsgemäß geladen ist. Danach laden wir die Benutzer
Modell, so dass wir die Modellmethoden verwenden können.
$ this-> load-> database (); $ this-> load-> model ('Benutzer');
Als Nächstes initialisieren wir einige wichtige Variablen.
// init params $ params = array (); $ limit_per_page = 1; $ start_index = ($ this-> uri-> segment (3))? $ this-> uri-> segment (3): 0; $ total_records = $ this-> Users-> get_total ();
Die Variable $ limit_per_page
Definiert das Limit pro Seite. Natürlich können Sie es nach Belieben einstellen. Es ist momentan beispielsweise auf 1 gesetzt.
Das $ start_index
Variable enthält den Startindex des MySQL-Datensatzes. Wenn CodeIgniter die Paginierungslinks erstellt, wird standardmäßig der Startindex der Seite als drittes Segment in der URL angehängt. Sie können dieses Standardverhalten ändern. Dies ist jedoch etwas, das wir für den letzten Abschnitt dieses Artikels reservieren, in dem wir Anpassungsoptionen besprechen.
Zum Schluss nennen wir das get_total
Methode des Users-Modells, um die Gesamtdatensätze der Users-Tabelle abzurufen und diese der $ total_records
Variable.
Als nächstes holen wir die Datensätze der aktuellen Seite mit der get_current_page_records
Methode.
// aktuelle Seitenaufzeichnungen abrufen $ params ["results"] = $ this-> Users-> get_current_page_records ($ limit_per_page, $ start_index);
Bevor wir tatsächlich Paginierungs-Links erstellen können, müssen Sie die minimale Paging-Konfiguration mit Hilfe von initialisieren initialisieren
Methode der Paging-Bibliothek.
$ config ['base_url'] = base_url (). 'paging / index'; $ config ['total_rows'] = $ total_records; $ config ['per_page'] = $ limit_per_page; $ config ["uri_segment"] = 3; $ this-> pagination-> initialize ($ config);
Und das ist der Satz von Mindestparametern, um die Paginierungslinks aufzubauen.
Zum Schluss verwenden wir die create_links
Methode zum Erstellen von Paginierungslinks.
// Paging-Links erstellen $ params ["links"] = $ this-> pagination-> create_links ();
Der Rest ist nur die Formalität, um unsere Ansicht zu bezeichnen user_listing
und die Ausgabe rendern! Führen Sie die URL http: // Ihre-Code-Igniter-Site / Paging / Index aus, um die Benutzerauflistung zusammen mit den Paginierungslinks anzuzeigen.
Dies ist ein sehr einfaches und dennoch nützliches Beispiel für die Paginierung, das Sie an Ihre Anforderungen anpassen können.
Im nächsten Abschnitt erfahren Sie, wie Sie die Standard-Paginierung in Bezug auf Aussehen und Funktionalität anpassen können.
In diesem Abschnitt werden die verfügbaren Optionen erläutert, die Sie verwenden können, wenn Sie die Standard-Seitenumbruch-Links anpassen möchten.
Obwohl die CodeIgniter-Auslagerungsbibliothek den auslagerungsbezogenen Parameter automatisch aus der URL erkennt, können Sie einen benutzerdefinierten Wert definieren, wenn Sie ein anderes URL-Muster verwenden.
$ config ["uri_segment"] = 4;
Das num_links
Mit dieser Option können Sie die Anzahl von festlegen Ziffer Links, die vor und nach der aktiven Seitennummer in den Paginierungslinks angezeigt werden.
$ config ['num_links'] = 2;
Wenn Sie auf das Paging-URI-Segment zugreifen, ist dies standardmäßig ein Startindex. Wenn Sie beispielsweise zehn Datensätze pro Seite haben, ist das Paging-URI-Segment 20 für die dritte Seite. Wenn Sie stattdessen die tatsächlichen Seitennummern in den Seitenlinks anzeigen möchten, können Sie festlegen use_page_numbers
zu WAHR
.
$ config ['use_page_numbers'] = TRUE;
Natürlich müssen Sie sicherstellen, dass Sie den richtigen Startindex basierend auf der Seitennummer berechnen, die Sie von der URL abrufen.
In den meisten Fällen landen Sie in der Situation, in der Sie die Parameter für die Abfragezeichenfolge beibehalten möchten, die nicht mit der Paginierung zusammenhängen. Du kannst den ... benutzen reuse_query_string
Option, um diese Einrichtung zu aktivieren.
$ config ['reuse_query_string'] = TRUE;
Dies sind einige Optionen, mit denen Sie die standardmäßige Paginierungsfunktion ändern können. Als Nächstes betrachten wir einige andere Optionen, mit denen Sie die Anzeige von Seitenumbrüchen ändern können.
Wenn Sie den Paginierungscode mit einem anderen HTML-Tag umschließen möchten, können Sie dies mit dem full_tag_open
und full_tag_close
Optionen.
$ config ['full_tag_open'] = ''; $ config ['full_tag_close'] = '';
Es kann sehr nützlich sein, wenn Sie die Paginierungslinks benutzerdefiniert gestalten möchten.
Wenn Sie den Text ändern möchten, der für den ersten, letzten, nächsten und vorherigen Link angezeigt wird, können Sie dies auch tun.
$ config ['first_link'] = 'Erste Seite'; $ config ['last_link'] = 'Letzte Seite'; $ config ['next_link'] = 'Nächste Seite'; $ config ['prev_link'] = 'Vorherige Seite';
Wenn Sie diese einzelnen Links mit einem beliebigen HTML-Tag umschließen möchten, können Sie dies auf dieselbe Weise tun, wie wir es getan haben, um den gesamten Paging-Code einzuhüllen.
$ config ['first_tag_open'] = ''; $ config ['first_tag_close'] = ''; $ config ['last_tag_open'] = ''; $ config ['last_tag_close'] = ''; $ config ['next_tag_open'] = ''; $ config ['next_tag_close'] = ''; $ config ['prev_tag_open'] = ''; $ config ['prev_tag_close'] = '';
Manchmal möchten Sie den aktiven Link anders gestalten. Sie können dies tun, indem Sie Wrapper-Tags wie unten gezeigt anwenden.
$ config ['cur_tag_open'] = ''; $ config ['cur_tag_close'] = '';
Genauso, wenn Sie Ziffernverknüpfungen mit etwas umschließen möchten:
$ config ['num_tag_open'] = ''; $ config ['num_tag_close'] = '';
Damit ist die Geschichte der Individualisierung beendet. In der Tat könnten Sie sich das Beispiel für die Anpassung unter http: // Ihre-Code-Igniter-Site / Paging / Custom ansehen, das bereits in unserer Controller-Datei enthalten ist!
Nun wissen Sie, welche Konfiguration erforderlich ist, um eine anständige Seitenumstellung mit einer beliebigen Modellliste einzurichten. Und die meiste Zeit möchten Sie es auf der gesamten Site gleich halten. Was wirst du tun, um das zu erreichen? Sie könnten versucht sein, den Konfigurationscode zu kopieren und in jede Aktion einzufügen, für die die Konfiguration der Paginierung erforderlich ist.
Es gibt sogar eine bessere Möglichkeit, mit diesem Szenario umzugehen. Sie können eine Paging-Konfigurationsdatei unter erstellen application / config / pagination.php
und benutze die $ config
Variable, um Ihre Einstellungen zu definieren.
'; $ config ['full_tag_close'] = '
Darauf basierend wurde das überarbeitet Index
Aktionsmethode sollte so aussehen:
public function index () // load db und model $ this-> load-> database (); $ this-> load-> model ('Benutzer'); // init params $ params = array (); $ start_index = ($ this-> uri-> segment (3))? $ this-> uri-> segment (3): 0; $ total_records = $ this-> Users-> get_total (); // Lade Konfigurationsdatei $ this-> config-> load ('pagination', TRUE); $ settings = $ this-> config-> item ('Paginierung'); $ settings ['total_rows'] = $ this-> Users-> get_total (); $ settings ['base_url'] = base_url (). 'paging / config'; if ($ total_records> 0) // Aktuelle Datensätze abrufen $ params ["results"] = $ this-> Users-> get_current_page_records ($ settings ['per_page'], $ start_index); // Verwenden Sie die Einstellungen, um die Bibliothek zu initialisieren. $ this-> pagination-> initialize ($ settings); // Paging-Links erstellen $ params ["links"] = $ this-> pagination-> create_links (); $ this-> load-> view ('user_listing', $ params);
Natürlich die total_rows
und base_url
Variablen ändern sich von Aktion zu Aktion. Sie müssen also in jeder Aktion explizit festgelegt werden.
Dazu müssen Sie zunächst die Paginierungskonfiguration laden.
$ this-> config-> load ('pagination', TRUE); $ settings = $ this-> config-> item ('Paginierung');
Als Nächstes können Sie die aktionsspezifischen Einstellungen überschreiben.
$ settings ['total_rows'] = $ this-> Users-> get_total (); $ settings ['base_url'] = base_url (). 'paging / config';
Und damit bist du fertig!
Das war also die Geschichte der Paginierungskonfiguration, und damit endet auch dieser Artikel!
Heute haben wir die Paginierungsbibliothek in CodeIgniter durchlaufen.
Im ersten Teil dieses Artikels habe ich gezeigt, wie Sie die Paginierungsbibliothek verwenden können, indem Sie ein sehr einfaches und dennoch nützliches Beispiel geben.
Anschließend haben wir die Anpassungsoptionen besprochen, die Ihnen beim Einrichten der Paginierung zur Verfügung stehen.
Schließlich haben wir die Konfiguration der Paginierung im letzten Abschnitt besprochen.
CodeIgniter ist eine leistungsfähige PHP-Plattform. Egal, ob Sie gerade erst anfangen oder mit der nächsten Version anfangen, vergessen Sie nicht zu prüfen, was wir für Sie zur Verfügung haben.
Ich würde gerne Ihr Feedback in Form von Anfragen und Kommentaren über den untenstehenden Feed erfahren!