Zend_Navigation-Pages-Custom.xml 3.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596
  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <!-- EN-Revision: 24249 -->
  3. <!-- Reviewed: no -->
  4. <sect2 id="zend.navigation.pages.custom">
  5. <title>Créer des pages de type personnalisé</title>
  6. <para>
  7. Etendre <classname>Zend_Navigation_Page</classname> ne nécessite pas forcément de réécrire
  8. le constructeur ou les méthodes <methodname>setOptions()</methodname> ou
  9. <methodname>setConfig()</methodname>. Le constructeur prend un seul paramètre de type
  10. <type>Array</type> ou <classname>Zend_Config</classname> et il est passé à
  11. <methodname>setOptions()</methodname> ou <methodname>setConfig()</methodname> respectivement.
  12. Ces méthodes appellerons par la suite les setters <methodname>set()</methodname> qui distribueront
  13. leurs options. Si l'option <property>internal_id</property> est présente, alors la méthode
  14. <methodname>setInternalId()</methodname> sera évaluée si présente, et l'option en question lui sera
  15. passée. Si une telle méthode n'existe pas, l'option sera alors vue comme une propriété de la page
  16. et sera accessible sous <command>$internalId = $page->internal_id;</command> ou
  17. <command>$internalId = $page->get('internal_id');</command>.
  18. </para>
  19. <example id="zend.navigation.custom.example.simple">
  20. <title>La page personnalisée la plus simple possible</title>
  21. <para>
  22. La seule chose à définir dans une page personnalisée est la méthode
  23. <methodname>getHref()</methodname>.
  24. </para>
  25. <programlisting language="php"><![CDATA[
  26. class My_Simple_Page extends Zend_Navigation_Page
  27. {
  28. public function getHref()
  29. {
  30. return 'Quelquechose-ici--ce-que-je-veux';
  31. }
  32. }
  33. ]]></programlisting>
  34. </example>
  35. <example id="zend.navigation.custom.example.properties">
  36. <title>Une page personnalisée avec des propriétés</title>
  37. <para>
  38. Ajouter des propriétés à vos pages étendues ne nécessite pas de réécrire
  39. <methodname>setOptions()</methodname> ou <methodname>setConfig()</methodname>.
  40. </para>
  41. <programlisting language="php"><![CDATA[
  42. class My_Navigation_Page extends Zend_Navigation_Page
  43. {
  44. private $_foo;
  45. private $_fooBar;
  46. public function setFoo($foo)
  47. {
  48. $this->_foo = $foo;
  49. }
  50. public function getFoo()
  51. {
  52. return $this->_foo;
  53. }
  54. public function setFooBar($fooBar)
  55. {
  56. $this->_fooBar = $fooBar;
  57. }
  58. public function getFooBar()
  59. {
  60. return $this->_fooBar;
  61. }
  62. public function getHref()
  63. {
  64. return $this->foo . '/' . $this->fooBar;
  65. }
  66. }
  67. // can now construct using
  68. $page = new My_Navigation_Page(array(
  69. 'label' => 'Les noms des propriétés sont dirigés vers les setters',
  70. 'foo' => 'bar',
  71. 'foo_bar' => 'baz'
  72. ));
  73. // ...or
  74. $page = Zend_Navigation_Page::factory(array(
  75. 'type' => 'My_Navigation_Page',
  76. 'label' => 'Les noms des propriétés sont dirigés vers les setters',
  77. 'foo' => 'bar',
  78. 'foo_bar' => 'baz'
  79. ));
  80. ]]></programlisting>
  81. </example>
  82. </sect2>