Seitenkontrolle und ScrollingStyles

Die Darstellung von Elementen für eine Bildschirmseite ist ein guter Start. In den Code Abschnitten der vorhergehenden Sektion haben wir die setCurrentPageNumber() Methode gesehen um die aktive Seitenzahl zu setzen. Der nächste Schritt ist die Navigation durch die Seiten. Um das zu tun bietet Paginator zwei wichtige Tools: die Möglichkeit den Paginator mit Hilfe eines View Partials darzustellen und Unterstützung von sogenannten ScrollingStyles.

Der View Partial ist ein kleines View Skript welches die Seitenkontrollen darstellt, wie Buttons um zur nächsten oder vorigen Seite zu gehen. Welche Seitenkontrollen dargestellt werden hängt vom Inhalt des View Partials ab. Die Arbeit mit View Partials benötigt deren Einrichtung in Zend_View. Um mit den Seitenkontrollen anzufangen muss irgendwo in eigenen View Skript Pfad ein neues View Skript erstellt werden. Man kann es benennen wie man will, aber wir nennen es in diesem Text "controls.phtml". Das Referenz Handbuch enthält verschiedene Beispiele darüber was im View Skript möglich ist. Hier ist ein Beispiel:

<?php if ($this->pageCount): ?>
<!-- Link zur ersten Seite -->
<?php if (isset($this->previous)): ?>
  <a href="<?php echo $this->url(array('page' => $this->first)); ?>">
    Erste
  </a> |
<?php else: ?>
  <span class="disabled">Erste</span> |
<?php endif; ?>

<!-- Link zur vorherigen Seite -->
<?php if (isset($this->previous)): ?>
  <a href="<?php echo $this->url(array('page' => $this->previous)); ?>">
    &lt; Vorherige
  </a> |
<?php else: ?>
  <span class="disabled">&lt; Vorherige</span> |
<?php endif; ?>

<!-- Link zur nächsten Seite -->
<?php if (isset($this->next)): ?>
  <a href="<?php echo $this->url(array('page' => $this->next)); ?>">
    Nächste &gt;
  </a> |
<?php else: ?>
  <span class="disabled">Nächste &gt;</span> |
<?php endif; ?>

<!-- Link zur letzten Seite -->
<?php if (isset($this->next)): ?>
  <a href="<?php echo $this->url(array('page' => $this->last)); ?>">
    Letzte
  </a>
<?php else: ?>
  <span class="disabled">Letzte</span>
<?php endif; ?>

</div>
<?php endif; ?>

Der nächste Schritt ist es Zend_Paginator zu sagen welche View Partials verwendet werden können um die Navigationskontrollen darzustellen. Die folgende Zeile ist in die Bootstrap Datei der Anwendung zu geben.

Zend_View_Helper_PaginationControl::setDefaultViewPartial('controls.phtml');

Der letzte Schritt ist möglicherweise der einfachste. Man muss sicherstellen dass das Paginator Objekt dem Skript zugeordnet ist (NICHT dem 'controls.phtml' Skript!). Das einige was noch zu tun ist, ist es den Paginator im View Skript auszugeben. Das stellt automatisch den Paginator dar und verwendet den PaginationControl View Helfer. Im nächsten Beispiel wird das Paginator Objekt der 'paginator' View Variable zugeordnet. Keine Angst, man muss jetzt nicht vollständig verstehen wie alles funktioniert. Das nächste Kapitel zeigt ein komplettes Beispiel.

<?php echo $this->paginator; ?>

Zend_Paginator, stellt zusammen mit dem View Skript 'controls.phtml' das geschrieben wurde, sicher das die Seitenkontrollen richtig dargestellt werden. Um auszuwählen welche Seitenzahlen am Schirm angezeigt werden müssen, verwendet Paginator sogenannte ScrollingStyles. Der Standardstil wird "Sliding" genannt, was so ähnlich ist wie die Navigation für Yahoo's Suchergebnisse arbeitet. Um Googl's ScrollingStyle zu mimen, muss der Elastic Style verwendet werden. Man kann einen standardmäßigen ScrollingStyle mit der statischen setDefaultScrollingStyle() Methode setzen, oder man kann einen ScrollingStyle dynamisch spezifizieren wenn der Paginator im View Skript dargestellt wird. Das benötigt den manuellen Aufruf des View Helfers im View Skript.

// $this->paginator ist ein Paginator Objekt
<?php echo $this->paginationControl($this->paginator, 'Elastic', 'controls.phtml'); ?>

Für eine Liste aller vorhandenen ScrollingStyles, kann in das Referenz Handbuch gesehen werden.