2
0

Zend_Navigation-Pages-Custom.xml 3.1 KB

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