| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242 |
- <?xml version="1.0" encoding="UTF-8"?>
- <!-- EN-Revision: 24249 -->
- <!-- Reviewed: no -->
- <sect2 id="zend.navigation.pages.mvc">
- <title>Zend_Navigation_Page_Mvc</title>
- <para>
- Les pages de type <acronym>MVC</acronym> utilisent des paramètres <acronym>MVC</acronym>
- issus du composant <classname>Zend_Controller</classname>. Une page <acronym>MVC</acronym> utilisera
- en interne <classname>Zend_Controller_Action_Helper_Url</classname> dans la méthode
- <methodname>getHref()</methodname> pour générer des cibles (hrefs), et la méthode
- <methodname>isActive()</methodname> utilisera les paramètres issus de
- <classname>Zend_Controller_Request_Abstract</classname> et les comparera aux paramètres
- internes à la page.
- </para>
- <table id="zend.navigation.pages.mvc.options">
- <title>Options des pages de type MV</title>
- <tgroup cols="4">
- <thead>
- <row>
- <entry>Clé</entry>
- <entry>Type</entry>
- <entry>Valeur par défaut</entry>
- <entry>Description</entry>
- </row>
- </thead>
- <tbody>
- <row>
- <entry><code>action</code></entry>
- <entry><type>chaine</type></entry>
- <entry><constant>NULL</constant></entry>
- <entry>
- Nom de l'action pour générer des cibles vers la page.
- </entry>
- </row>
- <row>
- <entry><code>controller</code></entry>
- <entry><type>chaine</type></entry>
- <entry><constant>NULL</constant></entry>
- <entry>
- Nom du contrôleur pour générer des cibles vers la page.
- </entry>
- </row>
- <row>
- <entry><code>module</code></entry>
- <entry><type>chaine</type></entry>
- <entry><constant>NULL</constant></entry>
- <entry>
- Nom du module pour générer des cibles vers la page.
- </entry>
- </row>
- <row>
- <entry><code>params</code></entry>
- <entry><type>Array</type></entry>
- <entry><methodname>array()</methodname></entry>
- <entry>
- Paramètres utilisateurs pour générer des cibles vers la page.
- </entry>
- </row>
- <row>
- <entry><code>route</code></entry>
- <entry><type>chaine</type></entry>
- <entry><constant>NULL</constant></entry>
- <entry>
- Nom de la route à utiliser pour générer des cibles vers la page.
- </entry>
- </row>
- <row>
- <entry><code>reset_params</code></entry>
- <entry><code>bool</code></entry>
- <entry><constant>TRUE</constant></entry>
- <entry>
- Remettre à zéro les paramètres de la route ou non.
- </entry>
- </row>
- </tbody>
- </tgroup>
- </table>
- <note>
- <para>
- Les trois exemples qui suivent supposent une configuration <acronym>MVC</acronym> par défaut,
- avec une route <code>default</code>.
- </para>
- <para>
- L'<acronym>URI</acronym> retournée est relative au <code>baseUrl</code> de
- <classname>Zend_Controller_Front</classname>. Dans nos exemples, le baseUrl vaut
- '/' pour simplifier.
- </para>
- </note>
- <example id="zend.navigation.pages.mvc.example.getHref">
- <title>getHref() génères les URI de la page</title>
- <para>
- Cet exemple montre que les pages de type <acronym>MVC</acronym> utilisent
- <classname>Zend_Controller_Action_Helper_Url</classname> en interne pour générer
- les <acronym>URI</acronym>s suite à l'appel à <code>$page->getHref()</code>.
- </para>
- <programlisting language="php"><![CDATA[
- // getHref() retourne /
- $page = new Zend_Navigation_Page_Mvc(array(
- 'action' => 'index',
- 'controller' => 'index'
- ));
- // getHref() retourne /blog/post/view
- $page = new Zend_Navigation_Page_Mvc(array(
- 'action' => 'view',
- 'controller' => 'post',
- 'module' => 'blog'
- ));
- // getHref() retourne /blog/post/view/id/1337
- $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() détermine si la page est active</title>
- <para>
- Cet exemple montre que les pages de type <acronym>MVC</acronym> utilisent l'objet de
- requête afin de déterminer si elles sont actives ou non.
- </para>
- <programlisting language="php"><![CDATA[
- /*
- * Requête dispatchée:
- * - 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(); // retourne true
- $page2->isActive(); // retourne false
- /*
- * Requête dispatchée:
- * - module: blog
- * - controller: post
- * - action: view
- * - id: 1337
- */
- $page = new Zend_Navigation_Page_Mvc(array(
- 'action' => 'view',
- 'controller' => 'post',
- 'module' => 'blog'
- ));
- // retourne true, car la requpete a le même trio module/controller/action
- $page->isActive();
- /*
- * Requête dispatchée:
- * - module: blog
- * - controller: post
- * - action: view
- */
- $page = new Zend_Navigation_Page_Mvc(array(
- 'action' => 'view',
- 'controller' => 'post',
- 'module' => 'blog',
- 'params' => array('id' => null)
- ));
- // retourne false, car page a besoin du paramètre id dans la requête
- $page->isActive(); // retourne false
- ]]></programlisting>
- </example>
- <example id="zend.navigation.pages.mvc.example.routes">
- <title>Utiliser les routes</title>
- <para>
- Les routes sont utilisables dans les pages de type <acronym>MVC</acronym>. Si une page a une route,
- elle sera utilisée par <methodname>getHref()</methodname> pour générer l'<acronym>URL</acronym>
- de la page.
- </para>
- <para>
- <note>
- <para>
- Notez que si vous utilisez le paramètre <code>route</code>, vous devrez
- préciser les paramètres par défaut de la route
- (module, controller, action, etc.), autremant <methodname>isActive()</methodname>
- ne pourra déterminer si la page est active ou pas. La raison est qu'il n'existe
- actuellement aucune méthode permettant de récupérer les paramètres par défaut
- d'une route un objet <classname>Zend_Controller_Router_Route_Interface</classname>,
- ni même de récupérer la route courante depuis un objet
- <classname>Zend_Controller_Router_Interface</classname>.
- </para>
- </note>
- </para>
- <programlisting language="php"><![CDATA[
- // La route suivante est ajoutée au routeur de ZF
- Zend_Controller_Front::getInstance()->getRouter()->addRoute(
- 'article_view', // nom de la route
- new Zend_Controller_Router_Route(
- 'a/:id',
- array(
- 'module' => 'news',
- 'controller' => 'article',
- 'action' => 'view',
- 'id' => null
- )
- )
- );
- // Une page est créee avec un paramètre 'route'
- $page = new Zend_Navigation_Page_Mvc(array(
- 'label' => 'A news article',
- 'route' => 'article_view',
- 'module' => 'news', // requis pour isActive(), voyez les notes ci-dessus
- 'controller' => 'article', // requis pour isActive(), voyez les notes ci-dessus
- 'action' => 'view', // requis pour isActive(), voyez les notes ci-dessus
- 'params' => array('id' => 42)
- ));
- // retourne: /a/42
- $page->getHref();
- ]]></programlisting>
- </example>
- </sect2>
|