-
Notifications
You must be signed in to change notification settings - Fork 6
Umfangreiche_Daten_in_einem_Paging Control_darstellen
Wenn Sie immer alle Datensätze in einer Listview anzeigen, kann es schnell dazu führen, dass die Listview und damit die Lade- und Renderzeiten sehr lang werden. Sie können mit papaya CMS verhältnismäßig einfach ein Blättern in Listen realisieren.
Das folgende Beispiel stellt vor, wie Sie eine Liste mit einem Paging-Control erweitern können.
Um ein Paging-Control zu erstellen, gehen Sie wie folgt vor:
-
Erstellen Sie die Methode, die das XML für das Paging-Control ausgibt: XML für Paging-Control ausgeben
function getPagingBarXML() { if (isset($this->params['col_id'])) { include_once(PAPAYA_INCLUDE_PATH.'system/papaya_paging_buttons.php'); papaya_paging_buttons::getPagingButtons( $this, NULL, $this->params['offset_sticker'], $this->params['limit'], $this->getNumberOfStickersInCollection($this->params['col_id']), 9, 'offset_sticker' .md); } }
Die Methode
getPagingBarXML()
gibt das Paging-Control nur dann aus, wenn der Parametercol_id
gesetzt ist. Ist dies der Fall, wird eine Instanz der Klassepapaya_paging_buttons
erzeugt. -
Laden Sie für die Paging-Toolbar nur den benötigten Teil der Daten. In der Stickers-Anwendung hat die Methode
getStickersByCollection()
entsprechende Parameter, die die Anzahl der Einträge sowie den Startpunkt angeben: Nur benötigte Daten für eine Seite ladenfunction getStickersList() { $result = ''; if (isset($this->params['col_id']) && $this->params['col_id'] > 0) { $stickers = $this->getStickersByCollection( $this->params['col_id'], $this->params['limit'], $this->params['offset_sticker']); // ... } return $result; }
Die Sticker-Einträge werden in der lokalen Variable
$stickers
gespeichert. Die Angaben für die ID der Sammlung, dem Limit sowie dem Offset werden alle aus dem$params
-Array gelesen, um den passenden Abschnitt der Stickerliste aus der Datenbank zu laden. -
Fügen Sie die XML-Ausgabe der Methode
getPagingBarXML()
unterhalb des Elements<listview>
ein: Methode getPagingBarXML() einbindenfunction getStickersList() { $result = ''; if (isset($this->params['col_id']) && $this->params['col_id'] > 0) { $stickers = $this->getStickersByCollection( $this->params['col_id'], $this->params['limit'], $this->params['offset_sticker']); $result .= sprintf('<listview title="%s">'.LF, papaya_strings::escapeHTMLChars($this->_gt('Stickers'))); if (is_array($stickers) && count($stickers) > 0) { // Including the paging bar $result .= $this->getPagingBarXML(); // ... } else { $result .= sprintf( '<status>%s</status>'.LF, $this->_gt('No stickers in this collection.')); } $result .= '</listview>'; } return $result; }
-
Halten Sie den Status der Paging-Toolbar in der Session fest. Die Parameter sollten in der Methode
initialize()
gesetzt und initialisiert werden: Status der Paging-Toolbar in Session speichernfunction initialize() { // ... $this->initializeSessionParam('offset_sticker'); if (empty($this->params['offset_sticker'])) { $this->params['offset_sticker'] = 0; } $this->initializeSessionParam('limit'); if (empty($this->params['limit'])) { $this->params['limit'] = 20; } }
Speichern Sie die verwendeten Parameter in der Session, damit sie nicht bei jedem Methodenaufruf mit übergeben werden müssen. Nähere Information zur Verwendung der Session finden Sie in :Kategorie:POST/GET-Parameter lesen und Sessiondaten verwalten.
-
Speichern Sie die Änderungen in den Dateien ab.
Details zur Methode papaya_paging_buttons::getPagingButtons()
Die Methode papaya_paging_buttons::getPagingButtons()
hat folgende Methodensignatur:
Signatur der Methode getPagingButtons()
function getPagingButtons(
&$aOwner,
$baseParams,
$offset,
$step,
$max,
$groupCount = 9,
$paramName = 'offset',
$buttonAlign = NULL)
In der folgenden Tabelle sind alle Parameter der Methode getPagingButtons()
aus der Klasse papaya_paging_buttons
aufgeschlüsselt:
Parameter | Bedeutung |
---|---|
&$aOwner |
Basisobjekt |
$baseParams |
Linkparameter |
$offset |
Aktueller Offset für die Paginierung |
$step |
Anzahl der Datensätze pro Seite |
$max |
Maximale Anzahl der Datensätze pro Seite |
$groupCount |
Maximale Anzahl der Seitenlinks, die dargestellt werden sollen. Standardwert ist „9“. |
$paramName |
Name des Formularparameters, in dem der Offset-Wert für den aktuellen Abschnitt der Liste (Seite) festgehalten wird. Der Standardwert ist offset . |
$buttonAlign |
Ausrichtung des Buttons. Standardwert ist NULL . Mögliche Werte sind left , right , default . |