paginator-simple.xml 4.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126
  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <!-- EN-Revision: 24249 -->
  3. <!-- Reviewed: no -->
  4. <sect1 id="learning.paginator.simple">
  5. <title>Einfaches Beispiel</title>
  6. <para>
  7. In diesem ersten Beispiel wollen wir nichts spektakuläres, aber hoffentlich gibt es eine
  8. gute Idee darüber wozu <classname>Zend_Paginator</classname> designt wurde. Angenommen wir
  9. haben ein Array das $data heißt mit den Zahlen 1 bis 100 in Ihm, welches wir in eine Anzahl
  10. von Seiten aufteilen wollen. Man kann die statische <methodname>factory()</methodname>
  11. Methode in der Klasse <classname>Zend_Paginator</classname> verwenden um ein
  12. <classname>Zend_Paginator</classname> Objekt mit unseren Array in Ihm zu erhalten.
  13. </para>
  14. <programlisting language="php"><![CDATA[
  15. // Erstellt ein Array mit den Zahlen 1 bis 100
  16. $data = range(1, 100);
  17. // Holt ein Paginator Objekt und verwendet Zend_Paginator's eingebaute Factory
  18. $paginator = Zend_Paginator::factory($data);
  19. ]]></programlisting>
  20. <para>
  21. Wir sind fast fertig! Die Variable $paginator enthält jetzt eine Referenz auf das Paginator
  22. Objekt. Standardmäßig ist es eingestellt 10 Elemente pro Seite anzuzeigen. Um die Elemente
  23. für die aktuell aktive Seite anzuzeigen, ist alles was getan werden muss durch das
  24. Paginator Objekt mit einer foreach Schleife zu iterieren. Die aktuell aktive Seite ist
  25. standardmäßig die erste Seite wenn Sie nicht explizit spezifiziert wurde. Wir werden später
  26. sehen wie eine spezifische Seite ausgewählt werden kann. Der folgende Abschnitt zeigt eine
  27. unsortierte Liste welche die Zahlen 1 bis 10 enthält ,welche die Zahlen der ersten Seite
  28. sind.
  29. </para>
  30. <programlisting language="php"><![CDATA[
  31. // Erstellt ein Array mit den Zahlen 1 bis 100
  32. $data = range(1, 100);
  33. // Holt ein Paginator Objekt und verwendet Zend_Paginator's eingebaute Factory
  34. $paginator = Zend_Paginator::factory($data);
  35. ?><ul><?php
  36. // Jedes Element der aktuellen Seite in einem Listen Element darstellen
  37. foreach ($paginator as $item) {
  38. echo '<li>' . $item . '</li>';
  39. }
  40. ?></ul>
  41. ]]></programlisting>
  42. <para>
  43. Jetzt versuchen wir die Elemente der zweiten Seite darzustellen. Die
  44. <methodname>setCurrentPageNumber()</methodname> Methode kann verwendet werden um auszuwählen
  45. welche Seite man sehen will.
  46. </para>
  47. <programlisting language="php"><![CDATA[
  48. // Erstellt ein Array mit den Zahlen 1 bis 100
  49. $data = range(1, 100);
  50. // Holt ein Paginator Objekt und verwendet Zend_Paginator's eingebaute Factory
  51. $paginator = Zend_Paginator::factory($data);
  52. // Wählt die zweite Seite
  53. $paginator->setCurrentPageNumber(2);
  54. ?><ul><?php
  55. // Jedes Element der aktuellen Seite in einem Listen Element darstellen
  56. foreach ($paginator as $item) {
  57. echo '<li>' . $item . '</li>';
  58. }
  59. ?></ul>
  60. ]]></programlisting>
  61. <para>
  62. Wie erwartet stellt dieser kleine Abschnitt eine unsortierte Liste mit den Zahlen 11 bis 20
  63. in Ihm dar.
  64. </para>
  65. <para>
  66. Dieses einfache Beispiel demonstriert einen kleinen Teil davon was mit
  67. <classname>Zend_Paginator</classname> getan werden kann. Aber eine echte Anwendung liest
  68. selten in seinen Daten von einem reinen Array, deshalb ist der nächste Abschnitt dazu
  69. gedacht zu zeigen wir man Paginator verwenden kann um Ergebnisse einer Datenbank Abfrage
  70. seitenweise darzustellen. Bevor weitergelesen wird, sollte man sicherstellen das man sich
  71. damit auskennt wie <classname>Zend_Db_Select</classname> arbeitet!
  72. </para>
  73. <para>
  74. Im Datenbank Beispiel sehen wir nach einer Tabelle mit Blog Posts welche 'posts' genannt
  75. wird. Gehen wir direkt hinein und schauen uns ein einfaches Beispiel an.
  76. </para>
  77. <programlisting language="php"><![CDATA[
  78. // Eine Select Abfrage erstellen. $db ist ein Zend_Db_Adapter Objekt, von dem
  79. // wir annehmen das es bereits im Skript existiert
  80. $select = $db->select()->from('posts')->order('date_created DESC');
  81. // Holt ein Paginator Objekt und verwendet Zend_Paginator's eingebaute Factory
  82. $paginator = Zend_Paginator::factory($select);
  83. // Wählt die zweite Seite
  84. $paginator->setCurrentPageNumber(2);
  85. ?><ul><?php
  86. // Jedes Element der aktuellen Seite in einem Listen Element darstellen
  87. foreach ($paginator as $item) {
  88. echo '<li>' . $item->title . '</li>';
  89. }
  90. ?></ul>
  91. ]]></programlisting>
  92. <para>
  93. Wie man sehen kann ist dieses Beispiel nicht sehr unterschiedlich vom vorhergehenden.
  94. Der einzige Unterschied besteht darin dass man ein <classname>Zend_Db_Select</classname>
  95. Objekt statt einem Array an die <methodname>factory()</methodname> Methode des Paginator's
  96. übergibt. Für weitere Details darüber wie der Datenbank Adapter sicherstellt das eigene
  97. Anfragen effizient ausgeführt werden, sollte in das <classname>Zend_Paginator</classname>
  98. Kapitel im Referenz Handbuch bei den Adaptern DbSelect und DbTableSelect nachgesehen werden.
  99. </para>
  100. </sect1>