<?xml version="1.0" encoding="UTF-8"?>
<!-- EN-Revision: 24249 -->
<!-- Reviewed: no -->
<sect2 id="zend.navigation.pages.factory">
    <title>Créer des pages avec la fabrique</title>

    <para>
        Toute les pages (même les personnalisées) peuvent petre créer via la fabrique
        <methodname>Zend_Navigation_Page::factory()</methodname>. Celle-ci peut prendre un
        tableau d'options ou un objet <classname>Zend_Config</classname>. Chaque clé
        correspondant à une option de l'obet page à créer comme l'indique la section concernant
        les <link linkend="zend.navigation.pages">Pages</link>. Si le paramètre
        <code>uri</code> est passé et qu'aucun paramètre concernant <acronym>MVC</acronym> ne
        sont présents (<code>action, controller, module, route</code>), une page de type
        <acronym>URI</acronym> sera créee. Si un ou plusieurs paramètres concernant
        <acronym>MVC</acronym> sont passés, une page de type <acronym>MVC</acronym> sera
        retournée.
    </para>

    <para>
        Si le paramètre <code>type</code> est passé, la fabrique l'utilisera pour déterminer
        le nom de la classe à utiliser. Les valeurs <code>mvc</code> ou <code>uri</code>
        créeront des pages de types <acronym>MVC</acronym>/URI.
    </para>

    <example id="zend.navigation.pages.factory.example.mvc">
        <title>Créer une page MVC avec la fabrique</title>

        <programlisting language="php"><![CDATA[
$page = Zend_Navigation_Page::factory(array(
    'label'  => 'My MVC page',
    'action' => 'index'
));

$page = Zend_Navigation_Page::factory(array(
    'label'      => 'Search blog',
    'action'     => 'index',
    'controller' => 'search',
    'module'     => 'blog'
));

$page = Zend_Navigation_Page::factory(array(
    'label'      => 'Home',
    'action'     => 'index',
    'controller' => 'index',
    'module'     => 'index',
    'route'      => 'home'
));

$page = Zend_Navigation_Page::factory(array(
    'type'   => 'mvc',
    'label'  => 'My MVC page'
));
]]></programlisting>
    </example>

    <example id="zend.navigation.pages.factory.example.uri">
        <title>Créer une page URI avec la fabrique</title>

        <programlisting language="php"><![CDATA[
$page = Zend_Navigation_Page::factory(array(
    'label' => 'My URI page',
    'uri'   => 'http://www.example.com/'
));

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

$page = Zend_Navigation_Page::factory(array(
    'label' => 'My URI page',
    'uri'   => '#'
));

$page = Zend_Navigation_Page::factory(array(
    'type'   => 'uri',
    'label'  => 'My URI page'
));
]]></programlisting>
    </example>

    <example id="zend.navigation.pages.factory.example.custom">
        <title>Créer une page personnalisée avec la fabrique</title>

     <para>
         Utilisez l'option <code>type</code> afin de nommer la classe à
         utiliser.
     </para>

        <programlisting language="php"><![CDATA[
class My_Navigation_Page extends Zend_Navigation_Page
{
    protected $_fooBar = 'ok';

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

$page = Zend_Navigation_Page::factory(array(
    'type'    => 'My_Navigation_Page',
    'label'   => 'My custom page',
    'foo_bar' => 'foo bar'
));
]]></programlisting>
    </example>
</sect2>