paginator-together.xml 3.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182
  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <!-- EN-Revision: 24249 -->
  3. <!-- Reviewed: no -->
  4. <sect1 id="learning.paginator.together">
  5. <title>Alles zusammenfügen</title>
  6. <para>
  7. Wir haben gesehen wie ein Paginator Objekt erstellt wurd, wie die Elemente der aktuellen
  8. Seite dargestellt werden und wie ein Navigationselement dargestellt wird um durch die
  9. Seiten zu navigieren. In diesem Kapitel sehen wir wie Paginator in den Rest der MVC
  10. Anwendung passt.
  11. </para>
  12. <para>
  13. Im folgenden Beispiel ignorieren wir die Implementation der besten Praxis bei der ein
  14. Service Layer verwendet wird um das Beispiel einfach und leichter verständlich zu machen.
  15. Sobald wir mit der Verwendung von Service Layern vertraut sind, sollte es einfach sein zu
  16. sehen wie Paginator in diesen Ansatz der besten Praxis passt.
  17. </para>
  18. <para>
  19. Beginnen wir mit dem Controller. Die Beispielanwendung ist einfach und wir geben alles
  20. einfach in den IndexController und die IndexAction. Wie gesagt ist das nur zu Zwecken
  21. der Demonstration. Eine echte Anwendung sollte Controller nicht in dieser Art und Weise
  22. verwenden.
  23. </para>
  24. <programlisting language="php"><![CDATA[
  25. class IndexController extends Zend_Controller_Action
  26. {
  27. public function indexAction()
  28. {
  29. // Das Seitenkontroll View Skript einrichten. Siehe das Handbuch zu
  30. // Seitenkontrollen für weitere Informationen über dieses View Skript
  31. Zend_View_Helper_PaginationControl::setDefaultViewPartial('controls.phtml');
  32. // Holt eine bereits instanzierte Datenbank Verbindung von der Registry
  33. $db = Zend_Registry::get('db');
  34. // Erstellt ein Select Objekt welches Blog Posts holt, und absteigend
  35. // anhand des Erstellungsdatums sortiert
  36. $select = $db->select()->from('posts')->sort('date_created DESC');
  37. // Erstellt einen Paginator für die Abfrage der Blog Posts
  38. $paginator = Zend_Paginator::factory($select);
  39. // Die aktuelle Seitenzahl von der Anfrage lesen. Der Standardwert ist
  40. // 1 wenn keine explizite Seitenzahl angegeben wurde
  41. $paginator->setCurrentPageNumber($this->_getParam('page', 1));
  42. // Weist das Paginator Objekt der View zu
  43. $this->view->paginator = $paginator;
  44. }
  45. }
  46. ]]></programlisting>
  47. <para>
  48. Das folgende View Skript ist das index.phtml View Skript für die indexAction des
  49. IndexController's. Das View Skript kann einfach gehalten werden. Wir nehmen an das der
  50. standardmäßige ScrollingStyle verwendet wird.
  51. </para>
  52. <programlisting language="php"><![CDATA[
  53. <ul>
  54. <?php
  55. // Den Titel jedes Eintrags für die aktuelle Seite
  56. // in einem Listen-Element darstellen
  57. foreach ($this->paginator as $item) {
  58. echo '<li>' . $item->title . '</li>';
  59. }
  60. ?>
  61. </ul>
  62. <?php echo $this->paginator; ?>
  63. ]]></programlisting>
  64. <para>
  65. Jetzt zum Index des Projekts navigieren und Paginator in Aktion sehen. Was wir in diesem
  66. Tutorial diskutiert haben ist nur die Spitze des Eisbergs. Das Referenz Handbuch und die
  67. <acronym>API</acronym> Dokumentation können mehr darüber sagen das mit
  68. <classname>Zend_Paginator</classname> alles getan werden kann.
  69. </para>
  70. </sect1>