Zend_Navigation-Pages-Custom.xml 3.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899
  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <!-- EN-Revision: 24249 -->
  3. <!-- Reviewed: no -->
  4. <sect2 id="zend.navigation.pages.custom">
  5. <title>Erstellung eigener Seiten Typen</title>
  6. <para>
  7. Wenn <classname>Zend_Navigation_Page</classname> erweiter wird, besteht normalerweise keine
  8. Notwendigkeit den Constructor oder die Methoden <methodname>setOptions()</methodname> oder
  9. <methodname>setConfig()</methodname> zu überladen. Der Constructor der Seite nimmt einen
  10. einzelnen Parameter, ein <type>Array</type> oder ein <classname>Zend_Config</classname>
  11. Objekt, welches an <methodname>setOptions()</methodname> oder an
  12. <methodname>setConfig()</methodname> übergeben wird. Diese Methoden rufen dann die
  13. <methodname>set()</methodname> Methode auf, welche Optionen in native oder eigene
  14. Eigenschaften mappt. Wenn die Option <property>internal_id</property> angegeben wird, dann
  15. wird zuerst nach einer Methode geschaut die <methodname>setInternalId()</methodname> heißt
  16. und die Option wird an diese Methode übergeben wenn Sie existiert. Wenn die Methode nicht
  17. existiert, wird die Option als eigene Eigenschaft der Seite gesetzt, und ist über
  18. <command>$internalId = $page->internal_id;</command> oder
  19. <command>$internalId = $page->get('internal_id');</command> erreichbar.
  20. </para>
  21. <example id="zend.navigation.custom.example.simple">
  22. <title>Die einfachste eigene Seite</title>
  23. <para>
  24. Das einzige Ding das eine eigene Seite implementieren muß ist die
  25. <methodname>getHref()</methodname> Methode.
  26. </para>
  27. <programlisting language="php"><![CDATA[
  28. class My_Simple_Page extends Zend_Navigation_Page
  29. {
  30. public function getHref()
  31. {
  32. return 'something-completely-different';
  33. }
  34. }
  35. ]]></programlisting>
  36. </example>
  37. <example id="zend.navigation.custom.example.properties">
  38. <title>Eine eigene Seite mit Eigenschaften</title>
  39. <para>
  40. Wenn Eigenschaften an eine erweiterte Seite angefügt werden, gibt es keine
  41. Notwendigkeit <methodname>setOptions()</methodname> oder
  42. <methodname>setConfig()</methodname> zu Überladen/Modifizieren.
  43. </para>
  44. <programlisting language="php"><![CDATA[
  45. class My_Navigation_Page extends Zend_Navigation_Page
  46. {
  47. private $_foo;
  48. private $_fooBar;
  49. public function setFoo($foo)
  50. {
  51. $this->_foo = $foo;
  52. }
  53. public function getFoo()
  54. {
  55. return $this->_foo;
  56. }
  57. public function setFooBar($fooBar)
  58. {
  59. $this->_fooBar = $fooBar;
  60. }
  61. public function getFooBar()
  62. {
  63. return $this->_fooBar;
  64. }
  65. public function getHref()
  66. {
  67. return $this->foo . '/' . $this->fooBar;
  68. }
  69. }
  70. // Kann jetzt Erstellt werden mit
  71. $page = new My_Navigation_Page(array(
  72. 'label' => 'Namen von Eigenschaften werden auf Setter gemappt',
  73. 'foo' => 'bar',
  74. 'foo_bar' => 'baz'
  75. ));
  76. // ...oder
  77. $page = Zend_Navigation_Page::factory(array(
  78. 'type' => 'My_Navigation_Page',
  79. 'label' => 'Namen von Eigenschaften werden auf Setter gemappt',
  80. 'foo' => 'bar',
  81. 'foo_bar' => 'baz'
  82. ));
  83. ]]></programlisting>
  84. </example>
  85. </sect2>