Pager

Das Blättern von Einträgen ist in Web-Anwendungen eine sehr häufig benötigte Funktionalität. Um die Implementierung von mehrseitigen Listen zu erleichtern liefert das APF eine eigenes Modul mit - den pager.

Der Pager übernimmt die Selektion von relevanten Inhalten und liefert zusätzlich eine Komponente zur Anzeige von Blätter-Optionen mit. Anwendung findet der Pager in den APF-Modulen Kommentar-Funktion und Objektorientierte Implementierung eines Gästebuchs.

Die folgenden Kapiteln beschreiben den Aufbau des Moduls und die Verwendung im Detail.

1. Aufbau

Der Pager gesteht aus folgenden Komponenten:

  • PagerManager: Der PagerManager ist die zentrale Komponente des Modules. Sie stellt Ihnen ein Interface zum Laden von Einträgen und zur Darstellung einer HTML-Repräsentation zur Anzeige von Blätter-Optionen bereit.
  • PagerMapper: Implementiert einen einfachen data mapper zur Abstraktion der Datenbank-Kommunikation und bietet die Möglichkeit, Einträge direkt mit Hilfe einer Komponente Ihrer Anwendung zu laden.
  • SimplePagerController oder AdvancedPagerController: Die beiden (Document-)Controller repräsentieren zwei Darstellungsformen der Blätter-Optionen. Sie können diese jedoch jederzeit per Konfiguration durch eigene Implementierungen austauschen.
  • PagerManagerFabric: Die Klasse PagerManagerFabric kann zur Erzeugung des PagerManager genutzt werden, wurde jedoch in der Version 2.0 durch die Erzeugung per DIServiceManager ersetzt.

Da der PagerManager als generische Komponente gedacht ist, muss dieser vor dem Einsatz in Ihrer Applikation konfiguriert werden. Kapitel 2 gibt Ihnen einen Überblick über die notwendigen Konfigurations-Dateien und -Einstellungen.

2. Konfiguration

Zur Verwendung des Pagers müssen zunächst mehrere Konfigurations-Dateien angelegt werden. Die folgenden Kapitel beschreiben die notwendigen Inhalte und deren Bedeutung.

2.1. Basis-Konfiguration

Zur Erzeugung bzw. Konfiguration des PagerManager können Sie aus zwei unterschiedlichen Optionen wählen: Erzeugung via PagerManagerFabric oder DIServiceManager.

2.1.1 Erzeugung per PagerManagerFabric
Bitte beachten Sie, dass die Erzeugung über die PagerManagerFabric mit der Version 2.0 als veraltet gekennzeichnet wurde. Die Funktionalität wird zwar noch angeboten, wird jedoch in folgenden Releases entfernt! Nutzen Sie daher ab sofort die in Kapitel 2.1.2 beschriebene Variante.

Möchten Sie die gewünschte Instanz des PagerManager mit Hilfe der PagerManagerFabric erzeugen, so erwartet der Pager eine Konfigurations-Datei unter

Code
/APF/config/modules/pager/{CONTEXT}/{ENVIRONMENT}_pager.ini

Diese beinhaltet die wesentlichen Einstellungen und verweist jeweils auf weitere Konfigurationen, die in den Kapiteln 2.2 bis 2.4 beschrieben sind. Details zur Definition von Konfigurationen und der Bennenung von Pfaden finden Sie unter Konfiguration.

Der PagerManager erwartet folgenden Inhalt:

APF-Konfiguration
[{Pager-Name}] Pager.DatabaseConnection = "..." Pager.EntriesPerPage = "..." Pager.ParameterPageName = "..." Pager.ParameterCountName = "..." Pager.StatementNamespace = "" Pager.CountStatement = "..." Pager.EntriesStatement = "..." Pager.StatementParameters = "..." Pager.DesignNamespace = "" Pager.DesignTemplate = "" Pager.CacheInSession = "true|false" Pager.AllowDynamicEntriesPerPage = "true|false"

Die aufgeführten Parameter haben folgende Bedeutung:

Bezeichnung Beschreibung
{Pager-Name} Definiert den eindeutigen Bezeichner für die Pager-Konfiguration. Über diesen kann der Pager in Ihrer Applikation geladen werden.
Pager.DatabaseConnection Referenziert die zu verwendende Datenbank-Konfiguration unter /APF/config/core/database/{CONTEXT}/{ENVIRONMENT}_connections.ini. Details zur Definition von Datenbank-Verbindungen finden Sie unter ConnectionManager.
Pager.EntriesPerPage Defininiert die Anzahl der Einträge pro Seite (z.B. 10).
Pager.ParameterPageName Definiert den Namen des URL-Parameters für die anzuzeigende Seite (z.B. page).
Pager.ParameterCountName Definiert den Namen des URL-Parameters für die anzuzeigende Menge pro Seite (z.B. count).
Pager.StatementNamespace Definiert den Namespace in dem die SQL-Statement-Dateien zu finden sind, die der Pager zur Abfrage der Anzahl Inhalte und der Einträge nutzt (z.B. APF\modules\comments). Details zur Verwendung von Statement-Dateien finden Sie im Kapitel Statement-Dateien.
Pager.CountStatement Definiert den Namen der Statement-Datei zum Laden der Gesamt-Anzahl von Inhalten (z.B. load_entries_count.sql).
Pager.EntriesStatement Definiert den Namen der Statement-Datei zum Laden von Einträgen (z.B. load_entry_ids.sql).
Pager.StatementParameters Ermöglicht Ihnen die Definition von statischen Parametern, die bei der Ausführung der konfigurierten Statements als Standard-Wert genutzt werden (z.B. foo:bar|bar:baz).
Pager.DesignNamespace Definiert den Namespace unter dem die HTML-Repräsentation zu finden ist (z.B. APF\modules\pager\pres\templates).
Pager.DesignTemplate Definiert das für die Erzeugung der HTML-Repräsentation zu nutzende Template (z.B. pager_2).
Pager.CacheInSession Ermöglicht Ihnen die Ergebnisse einer Abfrage innerhalb eines Besuchs in der Session zwischenzuspeichern. Dies verbessert die Performance, sorgt jedoch gleichzeitig dafür, dass innerhalb eines Besuchs neu hinzugekommene Einträge ggf. nicht angezeigt werden (z.B. true|false).
Pager.AllowDynamicEntriesPerPage Erlaubt (true) oder verbietet (false) die dynamische Definition von Einträgen pro Seite über die URL.
Bitte beachten Sie, dass die Nutzung der Option Pager.AllowDynamicEntriesPerPage mit dem Wert true ggf. zu längeren Laufzeiten der Statements führen kann, sofern eine hohe Anzahl ein Einträgen pro Seite übergeben wird.

In Ihrer Applikation können Sie die gewünschte Pager-Instanz nun wie folgt beziehen und verwenden:

PHP-Code
use APF\modules\pager\biz\PagerManager; use APF\modules\pager\biz\PagerManagerFabric; /* @var $fabric PagerManagerFabric */ $fabric = & $this->getServiceObject('APF\modules\pager\biz\PagerManagerFabric'); $pager = & $fabric->getPagerManager('{Pager-Name}');
2.1.2 Erzeugung per DIServiceManager

Mit Hilfe des DIServiceManager lassen sich Code und Konfiguration einfacher trennen. Dies lässt sich auch bei der Nutzung des PagerManager erkennen, da die Konfiguration des Pagers direkt unterhalb des Namespace der Applikation abgelegt werden kann.

Um den PagerManager mit dem DI-Container des APF zu erzeugen muss zunächst eine Service-Definition erstellt werden. Diese können Sie an einer beliebigen Stelle ablegen. Es wird empfohlen, diese unter dem Namespace Ihrer Anwendung zu erstellen (z.B. APF\modules\comments für das Kommentar-Funktion-Modul). Der Name der Datei lautet gemäß Kapitel Konfigurations-Schema

Code
{ENVIRONMENT}_serviceobjects.ini

Der Inhalt der Datei gestaltet sich je nach Anwendungsfall unterschiedlich. Die folgende Code-Box zeigt alle verfügbaren Optionen:

APF-Konfiguration
[{Pager-Name}] servicetype = "NORMAL|SINGLETON|SESSIONSINGLETON|APPLICATIONSINGLETON" class = "APF\modules\pager\biz\PagerManager" conf.database-connection.method = "setDatabaseConnectionName" conf.database-connection.value = "..." conf.entries-per-page.method = "setEntriesPerPage" conf.entries-per-page.value = "..." conf.url-param-page.method = "setPageUrlParameterName" conf.url-param-page.value = "..." conf.url-param-count.method = "setCountUrlParameterName" conf.url-param-count.value = "..." conf.statement-namespace.method = "setStatementNamespace" conf.statement-namespace.value = "..." conf.count-statement.method = "setCountStatementFile" conf.count-statement.value = "..." conf.entries-statement.method = "setEntriesStatementFile" conf.entries-statement.value = "..." conf.statement-params.method = "setStatementParameters" conf.statement-params.value = "..." conf.ui-namespace.method = "setPagerUiNamespace" conf.ui-namespace.value = "..." conf.ui-template.method = "setPagerUiTemplate" conf.ui-template.value = "..." conf.caching.method = "setCacheInSession" conf.caching.value = "true|false" conf.dynamic-page-size.method = "setAllowDynamicEntriesPerPage" conf.dynamic-page-size.value = "true|false"

Die aufgeführten Direktiven haben folgende Bedeutung:

Bezeichnung Beschreibung
{Pager-Name} Definiert den eindeutigen Bezeichner für die Pager-Konfiguration. Über diesen kann der Pager in Ihrer Applikation geladen werden.
servicetype Definiert die Art der Erzeugung der Instanz von PagerManager. Details zu den jeweiligen Gültigkeitsbereichen entnehmen Sie bitte Kapitel Erzeugung von Objekten.
conf.database-connection.value Referenziert die zu verwendende Datenbank-Konfiguration unter /APF/config/core/database/{CONTEXT}/{ENVIRONMENT}_connections.ini. Details zur Definition von Datenbank-Verbindungen finden Sie unter ConnectionManager.
conf.entries-per-page.value Defininiert die Anzahl der Einträge pro Seite (z.B. 10).
conf.url-param-page.value Definiert den Namen des URL-Parameters für die anzuzeigende Seite (z.B. page).
conf.url-param-count.value Definiert den Namen des URL-Parameters für die anzuzeigende Menge pro Seite (z.B. count).
conf.statement-namespace.value Definiert den Namespace in dem die SQL-Statement-Dateien zu finden sind, die der Pager zur Abfrage der Anzahl Inhalte und der Einträge nutzt (z.B. APF\modules\comments). Details zur Verwendung von Statement-Dateien finden Sie im Kapitel Statement-Dateien.
conf.count-statement.value Definiert den Namen der Statement-Datei zum Laden der Gesamt-Anzahl von Inhalten (z.B. load_entries_count.sql).
conf.entries-statement.value Definiert den Namen der Statement-Datei zum Laden von Einträgen (z.B. load_entry_ids.sql).
conf.statement-params.value Ermöglicht Ihnen die Definition von statischen Parametern, die bei der Ausführung der konfigurierten Statements als Standard-Wert genutzt werden (z.B. foo:bar|bar:baz).
conf.ui-namespace.value Definiert den Namespace unter dem die HTML-Repräsentation zu finden ist (z.B. APF\modules\pager\pres\templates).
conf.ui-template.value Definiert das für die Erzeugung der HTML-Repräsentation zu nutzende Template (z.B. pager_2).
conf.caching.value Ermöglicht Ihnen die Ergebnisse einer Abfrage innerhalb eines Besuchs in der Session zwischenzuspeichern. Dies verbessert die Performance, sorgt jedoch gleichzeitig dafür, dass innerhalb eines Besuchs neu hinzugekommene Einträge ggf. nicht angezeigt werden (z.B. true|false).
conf.dynamic-page-size.value Erlaubt (true) oder verbietet (false) die dynamische Definition von Einträgen pro Seite über die URL.
Bitte beachten Sie, dass die Nutzung der Option conf.dynamic-page-size.value mit dem Wert true ggf. zu längeren Laufzeiten der Statements führen kann, sofern eine hohe Anzahl ein Einträgen pro Seite übergeben wird.

In Ihrer Applikation können Sie die gewünschte Pager-Instanz nun wie folgt beziehen und verwenden:

PHP-Code
use APF\modules\pager\biz\PagerManager; /* @var $pager PagerManager */ $pager = $this->getDIServiceObject('...', '{Pager-Name}');

2.2. Statement-Dateien

Um den PagerManager für Ihre Anwendung nutzbar zu gestalten wurden Applikations-spezifische Teile in konfigurierbare Elemente ausgelagert. Dies betrifft die allgemeine Konfiguration (siehe Kapitel 2.1) sowie der Inhalt der zur Anzeige der Blätter-Funktion notwendigen SQL-Abfragen.

Zur Anzeige der Inhalte und des Navigationselements werden zwei SQL-Abfragen benötigt, die in den in Klammern stehenden Konfigurations-Direktiven definiert werden:

  • Anzahl aller Inhalte (Pager.CountStatement bzw. conf.count-statement.value)
  • Anzeige der Einträge der aktuell ausgewählten Seite (Pager.EntriesStatement bzw. conf.entries-statement.value)

In beide Statements werden jeweils definierte Parameter und Aliasse erwartet, damit der Pager die notwendigen Informationen auswerten kann.

Statement-Dateien unterliegen wie auch Konfigurations-Dateien einer im Kapitel Konfiguration beschriebenen Pfad- und Namens-Konvention. Definieren Sie beispielsweise Pager.StatementNamespace bzw. conf.statement-namespace.value mit dem Wert VENDOR\ui und füllen Pager.CountStatement bzw. conf.count-statement.value mit load_entries_count.sql, so nutzt die Datenbank-Verbindung folgenden Statement-Datei:

Code
/VENDOR/config/ui/{CONTEXT}/{ENVIRONMENT}_load_entries_count.sql
2.2.1. Abfrage der Gesamtzahl

Die Abfrage der Gesamtzahl von Inhalten dient zur dynamischen Berechnung der Seiten-Anzahl. Hierzu ist ein Statement mit folgendem Inhalt notwendig:

SQL-Statement
SELECT COUNT(...) AS EntriesCount ...

Das Alias EntriesCount dient dem PagerMapper dazu, das Ergebnis auszuwerten. Daher muss das Alias in diesem exakten Wortlaut definiert werden. Der restliche Teil des Statements ist frei und gemäß den Anforderungen Ihrer Anwendung definierbar.

Die folgende Code-Box zeigt ein Statement, das im Modul Kommentar-Funktion zum Einsatz kommt:

SQL-Statement
SELECT COUNT(*) AS EntriesCount FROM article_comments WHERE CategoryKey = '[CategoryKey]' GROUP BY CategoryKey;

Weitere Hinweise zu dynamischen Statement-Parametern entnehmen Sie bitte Kapitel 2.2.3.

2.2.2. Abfrage der Ergebnisse

Das per Pager.EntriesStatement bzw. conf.entries-statement.value referenzierte Statement dient der Selektion der Inhalte für die aktuell ausgewählte Seite. Hierzu ist ein Statement mit folgendem Inhalt notwendig:

SQL-Statement
SELECT ... AS DB_ID ... LIMIT [Start], [EntriesCount]

Das Alias DB_ID dient dem PagerMapper dazu, das Ergebnis auszuwerten. Daher muss das Alias in diesem exakten Wortlaut definiert werden. Die Limit-Klausel ist ebenfalls in der aufgeführten Form bindend, damit die für die ausgewählte Seite relevanten Inhalte geladen werden können. Der restliche Teil des Statements ist frei und gemäß den Anforderungen Ihrer Anwendung definierbar.

Die folgende Code-Box zeigt ein Statement, das im Modul Kommentar-Funktion zum Einsatz kommt:

SQL-Statement
SELECT ArticleCommentID AS DB_ID FROM article_comments WHERE CategoryKey = '[CategoryKey]' ORDER BY Date DESC, Time DESC LIMIT [Start],[EntriesCount];

Weitere Hinweise zu dynamischen Statement-Parametern entnehmen Sie bitte Kapitel 2.2.3.

2.2.3. Dynamische Parameter

Die in Kapitel 2.2.1 und 2.2.2 aufgeführten Statements können durch eine beliebige Anzahl an statischen und dynamischen Parametern ergänzt werden.

Diese können entweder in der Konfiguration (Direktiven: Pager.StatementParameters bzw. conf.statement-params.value) definiert oder dem PagerManager beim Laden der Einträge übergeben werden (Methode: PagerManager::loadEntries() bzw. PagerManager::loadEntriesByAppDataComponent()).

Die Definition der Parameter in der Konfiguration unterliegt folgendem Schema:

Code
param1:value1|param2:value2|...

Parameter und Wert werden jeweils mit einem : (Doppelpunkt), Werte-Paare mit einem | (Pipe) getrennt.

Die Initialisierung der Parameter unterliegt folgender Logik: beim Initialisieren der Konfigurationsparameter wird versucht, die Parameter mit gleichnamigen Werten aus der URL zu füllen. Dies bietet die Möglichkeit, die Parameter dynamisch per URL zu manipulieren. Ist die nicht gewünscht, so muss dafür Sorge getragen werden, dass die Parameter nicht in der URL auftauchen.

2.3. Anzeige

Die Anzeige des Navigationselements des Pagers wird über die Parameter Pager.DesignNamespace und Pager.DesignTemplate bzw. conf.ui-namespace.value und conf.ui-template.value gesteuert.

Das mit den beiden Direktiven referenzierte Template dient zur Erzeugung einer Seiten-Navigationsleiste und einer Komponente zur Auswahl der Anzahl von Einträgen pro Seite.

Für beide Anwendungsfälle liefert das Modul bereits eine Standard-Implementierung mit, die bei Bedarf erweitert oder durch eine eigene Implementierung ersetzt werden kann.

Hinweise zur Implementierung von eigenen Anzeige-Bausteinen finden Sie in Kapitel 3.3.

2.3.1. Einfache Anzeige

Um die mit dem APF mitgelieferte einfache Anzeige zu nutzen, definieren Sie bitte folgende Parameter in der Konfiguration:

APF-Konfiguration
; Variante 1: Erzeugung via PagerManagerFabric Pager.DesignNamespace = "APF\modules\pager\pres\templates" Pager.DesignTemplate = "pager" ; Variante 2: Erzeugung via DIServiceManager conf.ui-namespace.method = "setPagerUiNamespace" conf.ui-namespace.value = "APF\modules\pager\pres\templates" conf.ui-template.method = "setPagerUiTemplate" conf.ui-template.value = "pager"

Die Anzeige umfasst eine Liste von Seiten in der Form

Code
Seite | 1 | 2 |

Diese kann mit Hilfe von CSS-Selektoren entsprechend gestaltet werden.

2.3.2. Erweiterte Anzeige

Zur Nutzung der erweiterten Implementierung definieren Sie bitte folgende Parameter in der Konfiguration:

APF-Konfiguration
; Variante 1: Erzeugung via PagerManagerFabric Pager.DesignNamespace = "APF\modules\pager\pres\templates" Pager.DesignTemplate = "pager_2" ; Variante 2: Erzeugung via DIServiceManager conf.ui-namespace.method = "setPagerUiNamespace" conf.ui-namespace.value = "APF\modules\pager\pres\templates" conf.ui-template.method = "setPagerUiTemplate" conf.ui-template.value = "pager_2"

Die Anzeige umfasst eine Liste von Seiten und die Möglichkeit, die Anzahl der angezeigten Inhalte pro Seite zu wählen:

Code
Seite < 1 | 2 > Einträge/Seite: | 5 | 10 | 15 | 20 |

Diese kann mit Hilfe von CSS-Selektoren entsprechend gestaltet werden.

2.4. Datenbank-Verbindung

Um den PagerManager für Ihre Anwendung nutzbar zu gestalten wurden Applikations-spezifische Teile in konfigurierbare Elemente ausgelagert. Dies betrifft die allgemeine Konfiguration (siehe Kapitel 2.1), der Inhalt der zur Anzeige der Blätter-Funktion notwendigen SQL-Abfragen (siehe Kapitel 2.2) und die genutzte Datenbank-Verbindung Ihrer Anwendung.

Um für den Pager keine eigene Datenbank-Verbindung definieren zu müssen, lässt sich die Verbindung Ihrer Applikation in der Direktive Pager.DatabaseConnection bzw. conf.database-connection.value direkt referenzieren.

Die folgende Code-Box zeigt ein Beispiel für die Nutzung der Verbindung comments für den Pager:

APF-Konfiguration
; Variante 1: Erzeugung via PagerManagerFabric Pager.DatabaseConnection = "comments" ; Variante 2: Erzeugung via DIServiceManager conf.database-connection.method = "setDatabaseConnectionName" conf.database-connection.value = "comments"

Details zur Definition von Datenbank-Verbindungen finden Sie in Kapitel ConnectionManager.

3. Anwendungsbeispiele

Das vorliegende Kapitel zeigt zwei typische Code-Beispiele und wie die HTML-Ausgabe des Pager erweitert werden kann.

Ein weiteres Anwendungsbeispiele findet Sie im Kapitel Datenschicht des Kommentar-Funktion-Tutorials.

3.1. Laden von Einträgen

Die Methode PagerManager::loadEntries() kann genutzt werden um die anzuzeigenden Einträge zu laden. Wie der Name der Methode bereits verrät werden beim Aufruf lediglich die relevanten Ids der Einträge zurückgegeben.

Nachfolgendes Code-Beispiel zeigt, wie der Pager dazu genutzt werden kann die relevanten Einträge und eine Navigations-Element zum Umschalten zwischen den Seiten dargestellt werden kann:

PHP-Code
namespace VENDOR\ui; use APF\core\pagecontroller\BaseDocumentController; use APF\modules\pager\biz\PagerManager; use DateTime; class DisplayTweetsController extends BaseDocumentController { public function transformContent() { $pager = $this->getPager(); $queryParameters = array( 'FromDate' => '2013-10-01', 'ToDate' => date('Y-m-d') ); $list = $pager->loadEntries($queryParameters); foreach ($list as $item) { $this->setPlaceHolder( 'tweets', $this->generateTweetView( $this->loadTweetById($item) ), true ); } $this->setPlaceHolder('pager', $pager->getPager($queryParameters)); } /** * @param int $id * @return Tweet */ private function loadTweetById($id) { ... } /** * @return PagerManager */ private function getPager() { return $this->getDIServiceObject('VENDOR\ui', 'TweetsPager'); } /** * @param Tweet $tweet * @return string */ public function generateTweetView(Tweet $tweet) { ... } }

3.2. Laden von Domänen-Objekten

Um das Laden von Anwendungs- oder Domänen-Objekten innerhalb einer Anwendung besser abstrahieren zu können, bietet der PagerManager die Methode loadEntriesByAppDataComponent() an. Mit Hilfe dieser Funktion lassen sich Anwendungs-spezifische Objekte direkt laden.

Das nachfolgende Code-Beispiel zeigt die Anwendung basierend auf dem (Document-)Controller des vorangegangenen Kapitels:

PHP-Code
namespace VENDOR\ui; use APF\core\pagecontroller\BaseDocumentController; use APF\modules\pager\biz\PagerManager; use DateTime; class DisplayTweetsController extends BaseDocumentController { public function transformContent() { $pager = $this->getPager(); $queryParameters = array( 'FromDate' => '2013-10-01', 'ToDate' => date('Y-m-d') ); /* @var $list Tweet[] */ $list = $pager->loadEntriesByAppDataComponent( $this->getServiceObject('VENDOR\data\TweetLoader'), 'loadTweetById', $queryParameters ); foreach ($list as $item) { $this->setPlaceHolder('tweets', $this->generateTweetView($item), true); } $this->setPlaceHolder('pager', $pager->getPager($queryParameters)); } /** * @return PagerManager */ private function getPager() { return $this->getDIServiceObject('VENDOR\ui', 'TweetsPager'); } /** * @param Tweet $tweet * @return string */ public function generateTweetView(Tweet $tweet) { ... } }

Die Klasse VENDOR\data\TweetLoader bietet eine Methode loadTweetById() an, die eine Instanz der Klasse VENDOR\ui\Tweet an Hand ihrer Datenbank-Id läd.

3.3. Implementierung eines eigenen Navigationselements

Das APF-Modul liefert wie in Kapitel 2.3 beschrieben zwei Standard-Implementierungen von Pager Navigations-Elementen mit. Sofern diese nicht ausreichen, können Sie basierend auf den Konfigurations-Optionen Pager.DesignNamespace und Pager.DesignTemplate bzw. conf.ui-namespace.value und conf.ui-template.value eigene Implementierungen erstellen.

Zur Erleichterung der Implementierung stellt der PagerManager eine Liste von APF\modules\pager\biz\PageItem-Instanzen und weitere Informationen, die zur Darstellung benötigt werden, bereit. Diese können im DocumentController über die Attribute der aktuellen Document-Instanz bezogen werden.

Um die Liste der anzuzeigenden Seiten zu erhalten, können Sie folgenden Code nutzen:

PHP-Code
namespace VENDOR\ui; use APF\core\pagecontroller\BaseDocumentController; use APF\modules\pager\biz\PageItem; class DisplayTweetsController extends BaseDocumentController { public function transformContent() { /* @var $pages PageItem[] */ $pages = $this->getDocument()->getAttribute('Pages'); ... } }

Die folgende Liste zeigt Ihnen, welche Informationen der PagerManager als Attribut des aktuellen Dokuments bereit stellt:

Attribut Beschreibung
Pages Liste von Seiten, die für das aktuelle Ergebnis angezeigt werden können (Daten-Typ: Liste von APF\modules\pager\biz\PageItem-Instanzen)
PageUrlParameterName Name des URL-Parameters für die Wahl der anzuzeigenden Seite.
CountUrlParameterName Name des URL-Parameters für die Anzahl der anzuzeigenden Einträge pro Seite.
EntriesPerPage Anzahl der anzuzeigenden Einträge pro Seite.
DynamicPageSizeActivated Definiert ob die Wahl der Einträge pro Seite über die URL verändert werden darf (true) oder nicht (false).

Basierend auf den beschriebenen Funktionen können Sie nun eine eigene Darstellung des Pager-Navigations-Elements implementieren. Details zur Konfiguration entnehmen Sie bitte den Kapitel 2.1.1 und 2.1.2.

Als Vorlage können Sie die mit dem APF mitgelieferten Controller SimplePagerController und AdvancedPagerController nutzen.

Kommentare

Möchten Sie den Artikel eine Anmerkung hinzufügen, oder haben Sie ergänzende Hinweise? Dann können Sie diese hier einfügen. Die bereits verfassten Anmerkungen und Kommentare finden Sie in der untenstehenden Liste.
Für diesen Artikel liegen aktuell keine Kommentare vor.