Zend_Navigation_Page_Mvc
Les pages de type MVC utilisent des paramètres MVC
issus du composant Zend_Controller. Une page MVC utilisera
en interne Zend_Controller_Action_Helper_Url dans la méthode
getHref() pour générer des cibles (hrefs), et la méthode
isActive() utilisera les paramètres issus de
Zend_Controller_Request_Abstract et les comparera aux paramètres
internes à la page.
Options des pages de type MV
Clé
Type
Valeur par défaut
Description
action
chaine
NULL
Nom de l'action pour générer des cibles vers la page.
controller
chaine
NULL
Nom du contrôleur pour générer des cibles vers la page.
module
chaine
NULL
Nom du module pour générer des cibles vers la page.
params
Array
array()
Paramètres utilisateurs pour générer des cibles vers la page.
route
chaine
NULL
Nom de la route à utiliser pour générer des cibles vers la page.
reset_params
bool
TRUE
Remettre à zéro les paramètres de la route ou non.
Les trois exemples qui suivent supposent une configuration MVC par défaut,
avec une route default.
L'URI retournée est relative au baseUrl de
Zend_Controller_Front. Dans nos exemples, le baseUrl vaut
'/' pour simplifier.
getHref() génères les URI de la page
Cet exemple montre que les pages de type MVC utilisent
Zend_Controller_Action_Helper_Url en interne pour générer
les URIs suite à l'appel à $page->getHref().
'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)
));
]]>
isActive() détermine si la page est active
Cet exemple montre que les pages de type MVC utilisent l'objet de
requête afin de déterminer si elles sont actives ou non.
'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
]]>
Utiliser les routes
Les routes sont utilisables dans les pages de type MVC. Si une page a une route,
elle sera utilisée par getHref() pour générer l'URL
de la page.
Notez que si vous utilisez le paramètre route, vous devrez
préciser les paramètres par défaut de la route
(module, controller, action, etc.), autremant isActive()
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 Zend_Controller_Router_Route_Interface,
ni même de récupérer la route courante depuis un objet
Zend_Controller_Router_Interface.
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();
]]>