Zend_Navigation-Pages-Factory.xml 3.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115
  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <!-- Reviewed: no -->
  3. <!-- EN-Revision: 24249 -->
  4. <sect2 id="zend.navigation.pages.factory">
  5. <title>ページ・ファクトリを使ってページを作成</title>
  6. <para>
  7. すべてのページ(また、カスタマイズしたクラス)を、
  8. ページ・ファクトリ <methodname>Zend_Navigation_Page::factory()</methodname> を用いて
  9. 作成できます。
  10. ファクトリは任意の配列、
  11. または<classname>Zend_Config</classname>オブジェクトをとることができます。
  12. <link linkend="zend.navigation.pages">ページ</link>の節でご覧いただけるように、
  13. 配列または構成の各々のキーはページ・オプションと一致します。
  14. <code>uri</code>が与えられ、<acronym>MVC</acronym>オプション
  15. (<code>action, controller, module, route</code>)
  16. が与えられないなら、
  17. <acronym>URI</acronym>ページが作成されます。
  18. <acronym>MVC</acronym>オプションのいずれかが与えられると、
  19. <acronym>MVC</acronym>ページが作成されます。
  20. </para>
  21. <para>
  22. <code>type</code>が与えられると、
  23. ファクトリは、その値が作成されるべきであるクラスの名前であると仮定します。
  24. もし、値が <code>mvc</code> または <code>uri</code> ならば、
  25. <acronym>MVC</acronym>/URI 画面が作成されます。
  26. </para>
  27. <example id="zend.navigation.pages.factory.example.mvc">
  28. <title>ページ・ファクトリを使ってMVCページを作成</title>
  29. <programlisting language="php"><![CDATA[
  30. $page = Zend_Navigation_Page::factory(array(
  31. 'label' => 'My MVC page',
  32. 'action' => 'index'
  33. ));
  34. $page = Zend_Navigation_Page::factory(array(
  35. 'label' => 'Search blog',
  36. 'action' => 'index',
  37. 'controller' => 'search',
  38. 'module' => 'blog'
  39. ));
  40. $page = Zend_Navigation_Page::factory(array(
  41. 'label' => 'Home',
  42. 'action' => 'index',
  43. 'controller' => 'index',
  44. 'module' => 'index',
  45. 'route' => 'home'
  46. ));
  47. $page = Zend_Navigation_Page::factory(array(
  48. 'type' => 'mvc',
  49. 'label' => 'My MVC page'
  50. ));
  51. ]]></programlisting>
  52. </example>
  53. <example id="zend.navigation.pages.factory.example.uri">
  54. <title>ページ・ファクトリを使ってURIページを作成</title>
  55. <programlisting language="php"><![CDATA[
  56. $page = Zend_Navigation_Page::factory(array(
  57. 'label' => 'My URI page',
  58. 'uri' => 'http://www.example.com/'
  59. ));
  60. $page = Zend_Navigation_Page::factory(array(
  61. 'label' => 'Search',
  62. 'uri' => 'http://www.example.com/search',
  63. 'active' => true
  64. ));
  65. $page = Zend_Navigation_Page::factory(array(
  66. 'label' => 'My URI page',
  67. 'uri' => '#'
  68. ));
  69. $page = Zend_Navigation_Page::factory(array(
  70. 'type' => 'uri',
  71. 'label' => 'My URI page'
  72. ));
  73. ]]></programlisting>
  74. </example>
  75. <example id="zend.navigation.pages.factory.example.custom">
  76. <title>ページ・ファクトリを使ってカスタムページ型を作成</title>
  77. <para>
  78. ページ・ファクトリを使ってカスタムページ型を作成するには、
  79. インスタンス化するクラス名を指定するために、
  80. <code>type</code>オプションを使ってください。
  81. </para>
  82. <programlisting language="php"><![CDATA[
  83. class My_Navigation_Page extends Zend_Navigation_Page
  84. {
  85. protected $_fooBar = 'ok';
  86. public function setFooBar($fooBar)
  87. {
  88. $this->_fooBar = $fooBar;
  89. }
  90. }
  91. $page = Zend_Navigation_Page::factory(array(
  92. 'type' => 'My_Navigation_Page',
  93. 'label' => 'My custom page',
  94. 'foo_bar' => 'foo bar'
  95. ));
  96. ]]></programlisting>
  97. </example>
  98. </sect2>