Package Home

Zend Framework 2 Documentation (Manual)

PHK Home

File: /_sources/modules/zend.navigation.pages.factory.txt

Size:2968
Storage flags:no_autoload,compress/gzip (28%)

:orphan:

.. _zend.navigation.pages.factory:

Creating pages using the page factory
-------------------------------------

All pages (also custom classes), can be created using the page factory,
``Zend\Navigation\Page\AbstractPage::factory()``. The
factory can take an array with options, or a ``Zend\Config`` object. Each key in the array/config corresponds to a
page option, as seen in the section on :ref:`Pages <zend.navigation.pages>`. If the option *uri* is given and no
*MVC* options are given (*action, controller, route*), an *URI* page will be created. If any of the *MVC*
options are given, an *MVC* page will be created.

If *type* is given, the factory will assume the value to be the name of the class that should be created. If the
value is *mvc* or *uri* and *MVC*/URI page will be created.

.. _zend.navigation.pages.factory.example.mvc:

Creating an MVC page using the page factory
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

.. code-block:: php
   :linenos:

   $page = Zend\Navigation\Page\AbstractPage::factory(array(
       'label'  => 'My MVC page',
       'action' => 'index',
   ));

   $page = Zend\Navigation\Page\AbstractPage::factory(array(
       'label'      => 'Search blog',
       'action'     => 'index',
       'controller' => 'search',
   ));

   $page = Zend\Navigation\Page\AbstractPage::factory(array(
       'label' => 'Home',
       'route' => 'home',
   ));

   $page = Zend\Navigation\Page\AbstractPage::factory(array(
       'type'   => 'mvc',
       'label'  => 'My MVC page',
   ));

.. _zend.navigation.pages.factory.example.uri:

Creating a URI page using the page factory
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

.. code-block:: php
   :linenos:

   $page = Zend\Navigation\Page\AbstractPage::factory(array(
       'label' => 'My URI page',
       'uri'   => 'http://www.example.com/',
   ));

   $page = Zend\Navigation\Page\AbstractPage::factory(array(
       'label'  => 'Search',
       'uri'    => 'http://www.example.com/search',
       'active' => true,
   ));

   $page = Zend\Navigation\Page\AbstractPage::factory(array(
       'label' => 'My URI page',
       'uri'   => '#',
   ));

   $page = Zend\Navigation\Page\AbstractPage::factory(array(
       'type'  => 'uri',
       'label' => 'My URI page',
   ));

.. _zend.navigation.pages.factory.example.custom:

Creating a custom page type using the page factory
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

To create a custom page type using the factory, use the option *type* to specify a class name to instantiate.

.. code-block:: php
   :linenos:

   class My\Navigation\Page extends Zend\Navigation\Page\AbstractPage
   {
       protected $_fooBar = 'ok';

       public function setFooBar($fooBar)
       {
           $this->_fooBar = $fooBar;
       }
   }

   $page = Zend\Navigation\Page\AbstractPage::factory(array(
       'type'    => 'My\Navigation\Page',
       'label'   => 'My custom page',
       'foo_bar' => 'foo bar',
   ));



For more information about the PHK package format: http://phk.tekwire.net