VerwendungSeitendarstellung von Datensammlungen
Um Elemente in Seiten darzustellen muß Zend_Paginator einen generellen Weg des
Zugriffs auf diese Daten haben. Für diesen Zweck, läuft jeder Datenzugriff über Datenquellen
Adapter. Verschiedene Adapter werden mit dem Zend Framework standardmäßig ausgeliefert:
Adapter für Zend_PaginatorAdapterBeschreibungArrayVerwendet ein PHP ArrayDbSelect
Verwendet eine Instanz von
Zend_Db_Select,
welche ein Array zurückgibt
DbTableSelect
Verwendet eine Instanz von
Zend_Db_Table_Select,
welche eine Instanz von Zend_Db_Table_Rowset_Abstract zurückgibt.
Das gibt zusätzliche Information pber das Ergebnisset, wie z.B. die Namen der Spalten.
Iterator
Verwendet eine Instanz von
IteratorNullZend_Paginator nicht für das Verwalten von seitenweisen Daten verwenden.
Man kann trotzdem die Vorteile des Features der Seitenkontrolle verwenden.
Statt jede passende Zeile einer gegebenen Abfrage auszuwählen, empfangen die DbSelect und
DbTableSelect Adapter nur die kleinste Anzahl an Daten die für die Darstellung der aktuellen
Seite notwendig sind.
Deswegen wird dynamisch eine zweite Abfrage erzeugt um die komplette Anzahl an passenden
Zeilen festzustellen. Trotzdem ist es möglich die Anzahl oder die Abfrage für die Anzahl
selbst direkt zu übergeben. Siehe die setRowCount() Methode im DbSelect
Adapter für weitere Informationen.
Um eine Instanz von Zend_Paginator zu erstellen, muß ein Adapter an den Konstruktor
übergeben werden:
Der Einfachheit halber kann man für die mit dem Zend Framework mitgelieferten Adapter die
statische factory() verwenden:
Im Falle des Null Adapters, muß dem Konstruktor eine Elementanzahl mitgegeben werden da keine
Datensammlung vorliegt.
Auch wenn die Instanz in diesem Fall technische zu verwenden ist, muß in der Controller Aktion
der Seitendarstellung mitgeteilt werden welche Seitennummer der Benutzer angefragt hat. Das
erlaubt Ihm auf die seitenweisen Daten zuzugreifen.
setCurrentPageNumber($page);
]]>
Der einfachste Weg um diesen Wert zu verfolgen ist über eine URL. Auch wenn wir empfehlen einen
Zend_Controller_Router_Interface-kompatiblen Router zu verwenden um dies zu
bewerkstelligen, ist das keine Notwendigkeit.
Das folgende ist eine Beispielroute die in einer INI Konfigurationsdatei verwendet werden könnte:
Mit der obigen Route (und der Verwendung der Zend Framework MVC Komponenten), kann die aktuelle
Seitenzahl wie folgt gesetzt werden:
setCurrentPageNumber($this->_getParam('page'));
]]>
Es sind auch andere Optionen vorhanden; siehe
Konfiguration für zusätzliche Informationen.
Schlußendlich muß die Paginator Instanz der View angehängt werden. Wenn Zend_View mit
dem ViewRenderer Action Helfer verwendet wird, dann funktioniert das folgende:
view->paginator = $paginator;
]]>Seiten mit View Skripten darstellen
Das View Skript wird verwendet um die Seitenelemente darzustellen (wenn Zend_Paginator
verwendet wird um das zu tun) und die Seitenkontrollen anzuzeigen.
Weil Zend_Paginator Das SPL Interface
IteratorAggregate
integriert, ist das Durchlaufen von Elementen und deren Darstellung einfach.