[GENERIC] Zend_Translate:
[zend.git] / documentation / manual / en / module_specs / Zend_Navigation-Pages-Factory.xml
blobf545f02cfe679528279b6db5f7a818d302688d5c
1 <?xml version="1.0" encoding="UTF-8"?>
2 <!-- Reviewed: no -->
3 <sect2 id="zend.navigation.pages.factory">
4     <title>Creating pages using the page factory</title>
6     <para>
7         All pages (also custom classes), can be created using the page
8         factory, <methodname>Zend_Navigation_Page::factory()</methodname>. The factory
9         can take an array with options, or a
10         <classname>Zend_Config</classname> object. Each key in the
11         array/config corresponds to a page option, as seen in the
12         section on <link linkend="zend.navigation.pages">Pages</link>.
13         If the option <code>uri</code> is given and no <acronym>MVC</acronym> options are
14         given (<code>action, controller, module, route</code>), an <acronym>URI</acronym>
15         page will be created. If any of the <acronym>MVC</acronym> options are given, an
16         <acronym>MVC</acronym> page will be created.
17     </para>
19     <para>
20         If <code>type</code> is given, the factory will assume the value to
21         be the name of the class that should be created. If the value is
22         <code>mvc</code> or <code>uri</code> and <acronym>MVC</acronym>/URI page will be created.
23     </para>
25     <example id="zend.navigation.pages.factory.example.mvc">
26         <title>Creating an MVC page using the page factory</title>
28         <programlisting language="php"><![CDATA[
29 $page = Zend_Navigation_Page::factory(array(
30     'label'  => 'My MVC page',
31     'action' => 'index'
32 ));
34 $page = Zend_Navigation_Page::factory(array(
35     'label'      => 'Search blog',
36     'action'     => 'index',
37     'controller' => 'search',
38     'module'     => 'blog'
39 ));
41 $page = Zend_Navigation_Page::factory(array(
42     'label'      => 'Home',
43     'action'     => 'index',
44     'controller' => 'index',
45     'module'     => 'index',
46     'route'      => 'home'
47 ));
49 $page = Zend_Navigation_Page::factory(array(
50     'type'   => 'mvc',
51     'label'  => 'My MVC page'
52 ));
53 ]]></programlisting>
54     </example>
56     <example id="zend.navigation.pages.factory.example.uri">
57         <title>Creating a URI page using the page factory</title>
59         <programlisting language="php"><![CDATA[
60 $page = Zend_Navigation_Page::factory(array(
61     'label' => 'My URI page',
62     'uri'   => 'http://www.example.com/'
63 ));
65 $page = Zend_Navigation_Page::factory(array(
66     'label'  => 'Search',
67     'uri'    => 'http://www.example.com/search',
68     'active' => true
69 ));
71 $page = Zend_Navigation_Page::factory(array(
72     'label' => 'My URI page',
73     'uri'   => '#'
74 ));
76 $page = Zend_Navigation_Page::factory(array(
77     'type'   => 'uri',
78     'label'  => 'My URI page'
79 ));
80 ]]></programlisting>
81     </example>
83     <example id="zend.navigation.pages.factory.example.custom">
84         <title>Creating a custom page type using the page factory</title>
86         <para>
87             To create a custom page type using the factory, use the option
88             <code>type</code> to specify a class name to instantiate.
89         </para>
91         <programlisting language="php"><![CDATA[
92 class My_Navigation_Page extends Zend_Navigation_Page
94     protected $_fooBar = 'ok';
96     public function setFooBar($fooBar)
97     {
98         $this->_fooBar = $fooBar;
99     }
102 $page = Zend_Navigation_Page::factory(array(
103     'type'    => 'My_Navigation_Page',
104     'label'   => 'My custom page',
105     'foo_bar' => 'foo bar'
107 ]]></programlisting>
108     </example>
109 </sect2>