<?xml version="1.0" encoding="UTF-8"?>
<!-- EN-Revision: 15215 -->
<!-- Reviewed: no -->
<sect2 id="zend.navigation.pages.mvc">
    <title>Zend_Navigation_Page_Mvc</title>

    <para>
        MVC Seiten werden definiert indem MVC Parameter verwendet werden wie von der
        <classname>Zend_Controller</classname> Komponent bekannt. Eine MVC Seite wird intern in der
        <code>getHref()</code> Methode <classname>Zend_Controller_Action_Helper_Url</classname>
        verwenden um hrefs zu erstellen, und die <code>isActive()</code> Methode wird die
        Parameter von <classname>Zend_Controller_Request_Abstract</classname> mit den Seiten
        Parametern verknüpfen um zu erkennen ob die Seite aktiv ist.
    </para>

    <table id="zend.navigation.pages.mvc.options">
        <title>MVC Seiten Optionen</title>
        <tgroup cols="4">
            <thead>
                <row>
                    <entry>Schlüssel</entry>
                    <entry>Typ</entry>
                    <entry>Standardwert</entry>
                    <entry>Beschreibung</entry>
                </row>
            </thead>
            <tbody>
                <row>
                    <entry><code>action</code></entry>
                    <entry><code>string</code></entry>
                    <entry><code>null</code></entry>
                    <entry>
                        Name der Aktion die verwendet wird wenn eine href zur Seite erstellt wird.
                    </entry>
                </row>
                <row>
                    <entry><code>controller</code></entry>
                    <entry><code>string</code></entry>
                    <entry><code>null</code></entry>
                    <entry>
                        Name des Controllers der verwendet wird wenn eine href zur Seite erstellt
                        wird.
                    </entry>
                </row>
                <row>
                    <entry><code>module</code></entry>
                    <entry><code>string</code></entry>
                    <entry><code>null</code></entry>
                    <entry>
                        Name des Moduls das verwendet wird wenn eine href zur Seite erstellt wird.
                    </entry>
                </row>
                <row>
                    <entry><code>params</code></entry>
                    <entry><code>array</code></entry>
                    <entry><code>array()</code></entry>
                    <entry>
                        Benutzer Parameter die verwendet werden wenn eine href zur Seite erstellt
                        wird.
                    </entry>
                </row>
                <row>
                    <entry><code>route</code></entry>
                    <entry><code>string</code></entry>
                    <entry><code>null</code></entry>
                    <entry>
                        Name der Route die verwendet wird wenn eine href zur Seite erstellt wird.
                    </entry>
                </row>
                <row>
                    <entry><code>reset_params</code></entry>
                    <entry><code>bool</code></entry>
                    <entry><code>true</code></entry>
                    <entry>
                        Ob Benutzer Parameter resetiert werden sollen wenn eine href zur Seite
                        erstellt wird.
                    </entry>
                </row>
            </tbody>
        </tgroup>
    </table>

    <note>
        <para>
            Die drei Beispiele anbei nehmen ein Standard MVC Setup an mit der <code>default</code>
            Route an.
        </para>

        <para>
            Die zurückgegebene URI ist relativ zur <code>baseUrl</code> in
            <classname>Zend_Controller_Front</classname>. Im Beispiel ist die baseUrl der Einfachheit halber
            '/'.
        </para>
    </note>

    <example id="zend.navigation.pages.mvc.example.getHref">
        <title>getHref() erstellt die Seiten URI</title>

        <para>
            Dieses Beispiel zeigt das MVC Seiten intern
            <classname>Zend_Controller_Action_Helper_Url</classname> verwenden um URIs zu
            erstellen wenn <code>$page->getHref()</code> aufgerufen wird.
        </para>

        <programlisting role="php"><![CDATA[
// getHref() gibt / zurück
$page = new Zend_Navigation_Page_Mvc(array(
    'action'     => 'index',
    'controller' => 'index'
));

// getHref() gibt /blog/post/view zurück
$page = new Zend_Navigation_Page_Mvc(array(
    'action'     => 'view',
    'controller' => 'post',
    'module'     => 'blog'
));

// getHref() gibt /blog/post/view/id/1337 zurück
$page = new Zend_Navigation_Page_Mvc(array(
    'action'     => 'view',
    'controller' => 'post',
    'module'     => 'blog',
    'params'     => array('id' => 1337)
));
]]></programlisting>
    </example>

    <example id="zend.navigation.pages.mvc.example.isActive">
        <title>isActive() erkennt ob eine Seite aktiv ist</title>

        <para>
            Dieses Beispiel zeigt das MVC Seiten erkennen ob sie aktiv sind indem die Parameter
            verwendet werden die im Anfrage Objekt gefunden werden.
        </para>

        <programlisting role="php"><![CDATA[
/*
 * Ausgeführte Anfrage:
 * - module:     default
 * - controller: index
 * - action:     index
 */
$page1 = new Zend_Navigation_Page_Mvc(array(
    'action'     => 'index',
    'controller' => 'index'
));

$page2 = new Zend_Navigation_Page_Mvc(array(
    'action'     => 'bar',
    'controller' => 'index'
));

$page1->isActive(); // returns true
$page2->isActive(); // returns false

/*
 * Ausgeführte Anfrage:
 * - module:     blog
 * - controller: post
 * - action:     view
 * - id:         1337
 */
$page = new Zend_Navigation_Page_Mvc(array(
    'action'     => 'view',
    'controller' => 'post',
    'module'     => 'blog'
));

// Gibt true zurück, weil die Anfrage die gleichen Module, Controller
// und Aktion hat
$page->isActive();

/*
 * Ausgefürte Anfrage:
 * - module:     blog
 * - controller: post
 * - action:     view
 */
$page = new Zend_Navigation_Page_Mvc(array(
    'action'     => 'view',
    'controller' => 'post',
    'module'     => 'blog',
    'params'     => array('id' => null)
));

// Gibt false zurück weil die Seite den id Parameter in der
// Anfrage gesetzt haben muß
$page->isActive(); // gibt false zurück
]]></programlisting>
    </example>

    <example id="zend.navigation.pages.mvc.example.routes">
        <title>Routen verwenden</title>

        <para>
            Routen können mit MVC Seite verwendet werden. Wenn eine Seite eine Route hat, wird
            diese Route in <code>getHref()</code> verwendet um die URL für die Seite zu erstellen.
        </para>

        <para>
            <note>
                <para>
                    Beachte, das wenn die <code>route</code> Eigenschaft in einer Seite verwendet
                    wird, man auch die Standard Parameter spezifizieren sollte die diese Route
                    definieren (module, controller, action, usw.), andernfalls ist die
                    <code>isActive()</code> Methode nicht dazu in der Lage zu erkennen ob die Seite
                    aktiv ist oder nicht. Der Grund hierfür ist, das es aktuell keinen Weg gibt
                    die Standardparameter von einem
                    <classname>Zend_Controller_Router_Route_Interface</classname> Objekt zu erhalten, oder
                    die aktuelle Route von einem <classname>Zend_Controller_Router_Interface</classname>
                    Objekt.
                </para>
            </note>
        </para>

        <programlisting role="php"><![CDATA[
// Die folgende Route wird den ZF Router hinzugefügt
Zend_Controller_Front::getInstance()->getRouter()->addRoute(
    'article_view', // route name
    new Zend_Controller_Router_Route(
        'a/:id',
        array(
            'module'     => 'news',
            'controller' => 'article',
            'action'     => 'view',
            'id'         => null
        )
    )
);

// Eine Seite wird mit der 'route' Option erstellt
$page = new Zend_Navigation_Page_Mvc(array(
    'label'      => 'A news article',
    'route'      => 'article_view',
    'module'     => 'news',    // wird für isActive() benötigt, siehe oben
    'controller' => 'article', // wird für isActive() benötigt, siehe oben
    'action'     => 'view',    // wird für isActive() benötigt, siehe oben
    'params'     => array('id' => 42)
));

// Gibt /a/42 zurück
$page->getHref();
]]></programlisting>
    </example>
</sect2>