Verwendung Seitendarstellung 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_Paginator Adapter Beschreibung Array Verwendet ein PHP Array DbSelect 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 Iterator Null Zend_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.

Beispiel

paginator)): ?>
    paginator as $item): ?>
paginationControl($this->paginator, 'Sliding', 'my_pagination_control.phtml'); ?> ]]>
Der Aufruf des View Helfers fast am Ende ist zu beachten. PaginationControl nimmt bis zu vier Parameter: die Paginator Instanz, einen Scrolling Stil, eine partielle View und ein Array von zusätzlichen Parametern. Die zweiten und dritten Parameter sind sehr wichtig. Wobei die partielle View verwendet wird um festzustellen wie die Seitenkontrollen aussehen sollten, und der Scrolling Stil verwendet wird um zu kontrollieren wie er sich verhalten sollte. Angenommen die partielle View ist im Stil einer Suchseiten Kontrolle, wie anbei: Was passiert wenn der Benutzer den "next" Link ein paar Mal anklickt? Nun, viele Dinge könnten geschehen. Die aktuelle Seitennummer könnte in der Mitte stehen wärend man durchklickt (wie Sie es auf Yahoo macht!), oder Sie könnte bis zum Ende des Seitenbereichs ansteigen und dann auf der linken Seite erscheinen wenn der Benutzer ein weiteres Mal "next" klickt. Die Seitennummer könnte sogar größer und kleiner werden wärend der Benutzer auf sie zugreift (oder "scrollt). (wie es auf Google geschieht). Es gibt view Scrolling Stile die mit dem Zend Framework geliefert werden: Scrolling Stile für Zend_Paginator Scrolling Stil Beschreibung All Gibt alle Seiten zurück. Das ist für Seitenkontrollen mit Dropdownmenüs nützlich wenn Sie relativ wenig Seiten haben. In diesen Fällen ist es oft gewünscht alle vorhandenen Seiten dem Benutzer auf einmal anzuzeigen. Elastic Eine Google-artiger Scrolling Stil der sich erweitert und verkleinert wenn ein Benutzer durch die Seiten scrollt. Jumping Wenn Benutzer scrollen, steigt die Seitenzahl bis zum Ende eines gegebenen Bereichs, und startet anschließend wieder beim Beginn eines neuen Bereichs. Sliding Ein Yahoo!-artiger Scrolling Stil der die aktuelle Seitenzahl in der Mitte des Seitenbereichs platziert, oder so nahe wie möglich. Das ist der Standardstil.
Der vierte und letzte Parameter ist reserviert für ein assoziatives Array an zusätzlichen Variablen das in der partiellen View vorhanden sein sill (über $this). Für Instanzen, können diese Werte extra URL Parameter für Seitendarstellungslinks enthalten. Durch das Setzen von einer standardmäßigen partiellen View, einem standardmäßigen Scrolling Stil und einer View Instanz kann dei Aufruf der PaginationControl komplett eliminiert werden: setView($view); ]]> Wenn alle diese Werte gesetzt sind, kann die Seitenkontrolle im View Skript mit einem einfachen echo Statement dargestellt werden: paginator; ?> ]]> Natürlich ist es möglich Zend_Paginator mit anderen Template Engines zu verwenden. Mit Smarty zum Beispiel, würde man das folgendermaßen bewerkstelligen: assign('pages', $paginator->getPages()); ]]> Man könnte die Seitenverte von einem Template wie folgt erhalten: Beispiel der Seitenkontrolle Das folgende Beispiel von Seitenkontrollen wird Ihnen hoffentlich helfen um erstmals anzufangen: Such-Seitendarstellung pageCount): ?>
previous)): ?> < Vorher | < Vorher | pagesInRange as $page): ?> current): ?> | | next)): ?> Nächster > Nächster >
]]>
Element Seitendarstellung pageCount): ?>
firstItemNumber; ?> - lastItemNumber; ?> of totalItemCount; ?> previous)): ?> First | First | previous)): ?> < Vorheriger | < Vorheriger | next)): ?> Nächster > | Nächster > | next)): ?> Last Last
]]>
Dropdown Seitendarstellung pageCount): ?> ]]>
Tabelle von Eigenschaften Die folgenden Optionen von für eine Seitenkontrolle bei View Partials vorhanden: Eigenschaften die bei View Partials vorhanden sind Eigenschaft Typ Beschreibung first integer Erste Seitennummer (z.B., 1) firstItemNumber integer Absolute Nummer des ersten Elements auf dieser Seite firstPageInRange integer Erste Seite des Bereichs der vom Scrolling Stil zurückgegeben wird current integer Aktuelle Seitenzahl currentItemCount integer Anzahl der Elemente auf dieser Seite itemCountPerPage integer Maximale Anzahl der Elemente die auf jeder Seite vorhanden sind last integer Letzte Seitennummer lastItemNumber integer Absolute Zahl des letzten Elements auf dieser Seite lastPageInRange integer Letzte Seite im Bereich der vom Scrolling Stil zurückgegeben wird next integer Nächste Seitenzahl pageCount integer Anzahl an Seiten pagesInRange array Array von Seiten das vom Scrolling Stil zurückgegeben wird previous integer Vorherige Seitenzahl totalItemCount integer Komplette Anzahl an Elementen