|
|
@@ -1,5 +1,5 @@
|
|
|
<?xml version="1.0" encoding="UTF-8"?>
|
|
|
-<!-- EN-Revision: 16153 -->
|
|
|
+<!-- EN-Revision: 16276 -->
|
|
|
<!-- Reviewed: no -->
|
|
|
<sect1 id="zend.paginator.usage">
|
|
|
<title>Verwendung</title>
|
|
|
@@ -27,7 +27,7 @@
|
|
|
<tbody>
|
|
|
<row>
|
|
|
<entry>Array</entry>
|
|
|
- <entry>Verwendet ein PHP Array</entry>
|
|
|
+ <entry>Verwendet ein <acronym>PHP</acronym> Array</entry>
|
|
|
</row>
|
|
|
<row>
|
|
|
<entry>DbSelect</entry>
|
|
|
@@ -51,8 +51,8 @@
|
|
|
<row>
|
|
|
<entry>Iterator</entry>
|
|
|
<entry>
|
|
|
- Verwendet eine Instanz von
|
|
|
- <ulink url="http://www.php.net/~helly/php/ext/spl/interfaceIterator.html"><code>Iterator</code></ulink>
|
|
|
+ Verwendet eine Instanz von <ulink
|
|
|
+ url="http://www.php.net/~helly/php/ext/spl/interfaceIterator.html"><classname>Iterator</classname></ulink>
|
|
|
</entry>
|
|
|
</row>
|
|
|
<row>
|
|
|
@@ -77,8 +77,9 @@
|
|
|
<para>
|
|
|
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 <code>setRowCount()</code>
|
|
|
- Methode im DbSelect Adapter für weitere Informationen.
|
|
|
+ für die Anzahl selbst direkt zu übergeben. Siehe die
|
|
|
+ <methodname>setRowCount()</methodname> Methode im DbSelect Adapter für weitere
|
|
|
+ Informationen.
|
|
|
</para>
|
|
|
</note>
|
|
|
|
|
|
@@ -87,22 +88,18 @@
|
|
|
an den Konstruktor übergeben werden:
|
|
|
</para>
|
|
|
|
|
|
- <para>
|
|
|
- <programlisting language="php"><![CDATA[
|
|
|
+ <programlisting language="php"><![CDATA[
|
|
|
$paginator = new Zend_Paginator(new Zend_Paginator_Adapter_Array($array));
|
|
|
]]></programlisting>
|
|
|
- </para>
|
|
|
|
|
|
<para>
|
|
|
Der Einfachheit halber kann man für die mit dem Zend Framework mitgelieferten Adapter
|
|
|
- die statische <code>factory()</code> verwenden:
|
|
|
+ die statische <methodname>factory()</methodname> verwenden:
|
|
|
</para>
|
|
|
|
|
|
- <para>
|
|
|
- <programlisting language="php"><![CDATA[
|
|
|
+ <programlisting language="php"><![CDATA[
|
|
|
$paginator = Zend_Paginator::factory($array);
|
|
|
]]></programlisting>
|
|
|
- </para>
|
|
|
|
|
|
<note>
|
|
|
<para>
|
|
|
@@ -117,25 +114,23 @@ $paginator = Zend_Paginator::factory($array);
|
|
|
angefragt hat. Das erlaubt Ihm auf die seitenweisen Daten zuzugreifen.
|
|
|
</para>
|
|
|
|
|
|
- <para>
|
|
|
- <programlisting language="php"><![CDATA[
|
|
|
+ <programlisting language="php"><![CDATA[
|
|
|
$paginator->setCurrentPageNumber($page);
|
|
|
]]></programlisting>
|
|
|
- </para>
|
|
|
|
|
|
<para>
|
|
|
- Der einfachste Weg um diesen Wert zu verfolgen ist über eine URL. Auch wenn wir
|
|
|
- empfehlen einen <classname>Zend_Controller_Router_Interface</classname>-kompatiblen
|
|
|
+ Der einfachste Weg um diesen Wert zu verfolgen ist über eine <acronym>URL</acronym>.
|
|
|
+ Auch wenn wir empfehlen einen
|
|
|
+ <classname>Zend_Controller_Router_Interface</classname>-kompatiblen
|
|
|
Router zu verwenden um dies zu bewerkstelligen, ist das keine Notwendigkeit.
|
|
|
</para>
|
|
|
|
|
|
<para>
|
|
|
- Das folgende ist eine Beispielroute die in einer INI Konfigurationsdatei verwendet
|
|
|
- werden könnte:
|
|
|
+ Das folgende ist eine Beispielroute die in einer <acronym>INI</acronym>
|
|
|
+ Konfigurationsdatei verwendet werden könnte:
|
|
|
</para>
|
|
|
|
|
|
- <para>
|
|
|
- <programlisting language="php"><![CDATA[
|
|
|
+ <programlisting language="php"><![CDATA[
|
|
|
routes.example.route = articles/:articleName/:page
|
|
|
routes.example.defaults.controller = articles
|
|
|
routes.example.defaults.action = view
|
|
|
@@ -143,18 +138,15 @@ routes.example.defaults.page = 1
|
|
|
routes.example.reqs.articleName = \w+
|
|
|
routes.example.reqs.page = \d+
|
|
|
]]></programlisting>
|
|
|
- </para>
|
|
|
|
|
|
<para>
|
|
|
- Mit der obigen Route (und der Verwendung der Zend Framework MVC Komponenten), kann die
|
|
|
- aktuelle Seitenzahl wie folgt gesetzt werden:
|
|
|
+ Mit der obigen Route (und der Verwendung der Zend Framework <acronym>MVC</acronym>
|
|
|
+ Komponenten), kann die aktuelle Seitenzahl wie folgt gesetzt werden:
|
|
|
</para>
|
|
|
|
|
|
- <para>
|
|
|
- <programlisting language="php"><![CDATA[
|
|
|
+ <programlisting language="php"><![CDATA[
|
|
|
$paginator->setCurrentPageNumber($this->_getParam('page'));
|
|
|
]]></programlisting>
|
|
|
- </para>
|
|
|
|
|
|
<para>
|
|
|
Es sind auch andere Optionen vorhanden; siehe
|
|
|
@@ -168,11 +160,9 @@ $paginator->setCurrentPageNumber($this->_getParam('page'));
|
|
|
funktioniert das folgende:
|
|
|
</para>
|
|
|
|
|
|
- <para>
|
|
|
- <programlisting language="php"><![CDATA[
|
|
|
+ <programlisting language="php"><![CDATA[
|
|
|
$this->view->paginator = $paginator;
|
|
|
]]></programlisting>
|
|
|
- </para>
|
|
|
</sect2>
|
|
|
|
|
|
<sect2 id="zend.paginator.usage.dbselect">
|
|
|
@@ -180,12 +170,13 @@ $this->view->paginator = $paginator;
|
|
|
<para>
|
|
|
Die Verwendung der meisten Adapter ist recht zielgerichtet. Trotzdem benötigen die
|
|
|
Datenbank Adapter detailiertere Erklärungen. Im Gegensatz zur üblichen Meinung holen
|
|
|
- diese Adapter NICHT alle Einträge von der Datenbank um sie zu zählen. Stattdessen
|
|
|
- manipuliert der Adapter die originale Abfrage um die entsprechende COUNT Abfrage zu
|
|
|
- erzeugen. Paginator führt dann diese COUNT Abfrage aus um die Anzahl der Zeilen zu
|
|
|
- erhalten. Das erfordert eine zusätzliche Beanspruchung der Datenbank, ist aber um ein
|
|
|
- vielfaches schneller als das komplette Ergebnisset zu holen und count() zu verwenden.
|
|
|
- Speziell bei einer großen Anzahl an Daten.
|
|
|
+ diese Adapter <emphasis>nicht</emphasis> alle Einträge von der Datenbank um sie zu
|
|
|
+ zählen. Stattdessen manipuliert der Adapter die originale Abfrage um die entsprechende
|
|
|
+ COUNT Abfrage zu erzeugen. Paginator führt dann diese COUNT Abfrage aus um die Anzahl
|
|
|
+ der Zeilen zu erhalten. Das erfordert eine zusätzliche Beanspruchung der Datenbank, ist
|
|
|
+ aber um ein vielfaches schneller als das komplette Ergebnisset zu holen und
|
|
|
+ <methodname>count()</methodname> zu verwenden. Speziell bei einer großen Anzahl an
|
|
|
+ Daten.
|
|
|
</para>
|
|
|
|
|
|
<para>
|
|
|
@@ -201,8 +192,14 @@ $this->view->paginator = $paginator;
|
|
|
<programlisting language="php"><![CDATA[
|
|
|
$adapter = new Zend_Paginator_Adapter_DbSelect($db->select()->from('posts'));
|
|
|
$adapter->setRowCount(
|
|
|
- $db->select()->from('item_counts', array(Zend_Paginator_Adapter_DbSelect::ROW_COUNT_COLUMN => 'post_count'))
|
|
|
-)
|
|
|
+ $db->select()
|
|
|
+ ->from(
|
|
|
+ 'item_counts',
|
|
|
+ array(
|
|
|
+ Zend_Paginator_Adapter_DbSelect::ROW_COUNT_COLUMN => 'post_count'
|
|
|
+ )
|
|
|
+ )
|
|
|
+);
|
|
|
|
|
|
$paginator = new Zend_Paginator($adapter);
|
|
|
]]></programlisting>
|
|
|
@@ -225,13 +222,12 @@ $paginator = new Zend_Paginator($adapter);
|
|
|
</para>
|
|
|
|
|
|
<para>
|
|
|
- Weil <classname>Zend_Paginator</classname> Das SPL Interface
|
|
|
- <ulink url="http://www.php.net/~helly/php/ext/spl/interfaceIteratorAggregate.html"><code>IteratorAggregate</code></ulink>
|
|
|
+ Weil <classname>Zend_Paginator</classname> Das <acronym>SPL</acronym> Interface <ulink
|
|
|
+ url="http://www.php.net/~helly/php/ext/spl/interfaceIteratorAggregate.html"><classname>IteratorAggregate</classname></ulink>
|
|
|
integriert, ist das Durchlaufen von Elementen und deren Darstellung einfach.
|
|
|
</para>
|
|
|
|
|
|
- <para>
|
|
|
- <programlisting language="php"><![CDATA[
|
|
|
+ <programlisting language="php"><![CDATA[
|
|
|
<html>
|
|
|
<body>
|
|
|
<h1>Beispiel</h1>
|
|
|
@@ -244,12 +240,11 @@ $paginator = new Zend_Paginator($adapter);
|
|
|
<?php endif; ?>
|
|
|
|
|
|
<?php echo $this->paginationControl($this->paginator,
|
|
|
- 'Sliding',
|
|
|
- 'my_pagination_control.phtml'); ?>
|
|
|
+ 'Sliding',
|
|
|
+ 'my_pagination_control.phtml'); ?>
|
|
|
</body>
|
|
|
</html>
|
|
|
]]></programlisting>
|
|
|
- </para>
|
|
|
|
|
|
<para>
|
|
|
Der Aufruf des View Helfers fast am Ende ist zu beachten. PaginationControl nimmt bis zu
|
|
|
@@ -334,8 +329,8 @@ $paginator = new Zend_Paginator($adapter);
|
|
|
<para>
|
|
|
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
|
|
|
- <code>$this</code>). Für Instanzen, können diese Werte extra URL Parameter für
|
|
|
- Seitendarstellungslinks enthalten.
|
|
|
+ <varname>$this</varname>). Für Instanzen, können diese Werte extra
|
|
|
+ <acronym>URL</acronym> Parameter für Seitendarstellungslinks enthalten.
|
|
|
</para>
|
|
|
|
|
|
<para>
|
|
|
@@ -344,26 +339,22 @@ $paginator = new Zend_Paginator($adapter);
|
|
|
eliminiert werden:
|
|
|
</para>
|
|
|
|
|
|
- <para>
|
|
|
- <programlisting language="php"><![CDATA[
|
|
|
+ <programlisting language="php"><![CDATA[
|
|
|
Zend_Paginator::setDefaultScrollingStyle('Sliding');
|
|
|
Zend_View_Helper_PaginationControl::setDefaultViewPartial(
|
|
|
'my_pagination_control.phtml'
|
|
|
);
|
|
|
$paginator->setView($view);
|
|
|
]]></programlisting>
|
|
|
- </para>
|
|
|
|
|
|
<para>
|
|
|
Wenn alle diese Werte gesetzt sind, kann die Seitenkontrolle im View Skript mit einem
|
|
|
einfachen echo Statement dargestellt werden:
|
|
|
</para>
|
|
|
|
|
|
- <para>
|
|
|
- <programlisting language="php"><![CDATA[
|
|
|
+ <programlisting language="php"><![CDATA[
|
|
|
<?php echo $this->paginator; ?>
|
|
|
]]></programlisting>
|
|
|
- </para>
|
|
|
|
|
|
<note>
|
|
|
<para>
|
|
|
@@ -372,21 +363,17 @@ $paginator->setView($view);
|
|
|
bewerkstelligen:
|
|
|
</para>
|
|
|
|
|
|
- <para>
|
|
|
- <programlisting language="php"><![CDATA[
|
|
|
+ <programlisting language="php"><![CDATA[
|
|
|
$smarty->assign('pages', $paginator->getPages());
|
|
|
]]></programlisting>
|
|
|
- </para>
|
|
|
|
|
|
<para>
|
|
|
Man könnte die Seitenverte von einem Template wie folgt erhalten:
|
|
|
</para>
|
|
|
|
|
|
- <para>
|
|
|
- <programlisting language="php"><![CDATA[
|
|
|
+ <programlisting language="php"><![CDATA[
|
|
|
{$pages.pageCount}
|
|
|
]]></programlisting>
|
|
|
- </para>
|
|
|
</note>
|
|
|
|
|
|
<sect3 id="zend.paginator.usage.rendering.example-controls">
|
|
|
@@ -399,8 +386,9 @@ $smarty->assign('pages', $paginator->getPages());
|
|
|
|
|
|
<para>
|
|
|
Such-Seitendarstellung
|
|
|
+ </para>
|
|
|
|
|
|
- <programlisting language="php"><![CDATA[
|
|
|
+ <programlisting language="php"><![CDATA[
|
|
|
<!--
|
|
|
Siehe http://developer.yahoo.com/ypatterns/pattern.php?pattern=searchpagination
|
|
|
-->
|
|
|
@@ -438,12 +426,12 @@ Siehe http://developer.yahoo.com/ypatterns/pattern.php?pattern=searchpagination
|
|
|
</div>
|
|
|
<?php endif; ?>
|
|
|
]]></programlisting>
|
|
|
- </para>
|
|
|
|
|
|
<para>
|
|
|
- Element Seitendarstellung
|
|
|
+ Element Seitendarstellung:
|
|
|
+ </para>
|
|
|
|
|
|
- <programlisting language="php"><![CDATA[
|
|
|
+ <programlisting language="php"><![CDATA[
|
|
|
<!--
|
|
|
Siehe http://developer.yahoo.com/ypatterns/pattern.php?pattern=itempagination
|
|
|
-->
|
|
|
@@ -492,12 +480,12 @@ of <?php echo $this->totalItemCount; ?>
|
|
|
</div>
|
|
|
<?php endif; ?>
|
|
|
]]></programlisting>
|
|
|
- </para>
|
|
|
|
|
|
<para>
|
|
|
- Dropdown Seitendarstellung
|
|
|
+ Dropdown Seitendarstellung:
|
|
|
+ </para>
|
|
|
|
|
|
- <programlisting language="php"><![CDATA[
|
|
|
+ <programlisting language="php"><![CDATA[
|
|
|
<?php if ($this->pageCount): ?>
|
|
|
<select id="paginationControl" size="1">
|
|
|
<?php foreach ($this->pagesInRange as $page): ?>
|
|
|
@@ -519,7 +507,6 @@ $('paginationControl').observe('change', function() {
|
|
|
})
|
|
|
</script>
|
|
|
]]></programlisting>
|
|
|
- </para>
|
|
|
</sect3>
|
|
|
|
|
|
<sect3 id="zend.paginator.usage.rendering.properties">
|