Consultez la FAQ sur le ZF avant de poster une question
Vous n'êtes pas identifié.
Bonjour,
Je découvre actuellement les possibilités de ZEND MVC, et en particulier, je me pose des questions au sujet de l'utilisation de NAVIGATION ou de ROUTER.
J'ai l'impression que on doit utiliser l'un ou l'autre.
Quelqu'un pourrait-il m'éclairer sur les cas d'utilisation de NAVIGATION et DE ROUTER.
Personnellement, j'utilise zend_navigation pour les breadcrumbs et ça marche nickel.
Par contre je ne sais pas quels sont les cas d'utilisation du ROUTER ZENd.
Merci de vos réponses.
Hors ligne
Moi j'utilise les routes et la navigation ne je vois pas pourquoi tu dit qu'on doit utiliser soit l'un soit l'autre, est ce que tu peux etre un peu plus précis
Hors ligne
Bonjour playmobilette,
J'ai du mal à comprendre le fonctionnement des routes avec navigation. est ce que ça doit se faire ds le bootstrap ou le controller. autrement, aurais tu un exemple concret avec routes et navigation à me proposer ?
J'utilise ZEND 1.10.
Je comprends mieux avec un exemple et malheureusement, tt ce que je trouve est souvent un peu confus ou avec une version plus ancienne de ZEND.
Pour la navigation, je l'utilise principalement pour les breadcrumbs mais ça ne marche pas bien si j'ai des paramètres.
Merci.
Hors ligne
Pour ma part j'utilise aussi Zend 1.10 et j'ai créé un Plugin
J'ai donc un fichier navigation.xml avec la définition de mon menu
<?xml version="1.0" encoding="UTF-8"?> <config> <nav> <accueil> <label>ACCUEIL</label> <route>accueil</route> <resource>Accueil</resource>
un fichier de route de ce type la
<?xml version="1.0"?> <zend-config xmlns:zf="http://framework.zend.com/xml/zend-config-xml/1.0/"> <production> <accueil> <route>Accueil</route> <defaults> <controller>Toto</controller> <action>monaction</action> </defaults> </accueil>
Et dans ma méthode PostDispatch de mon plug-in
$router = $front->getRouter(); $route = $router->getCurrentRouteName(); $activeNav = $this->view->navigation()->findByRoute($route); if ($activeNav != null) { $activeNav->active = true; $activeNav->visible = true; $activeNav->setParams($this->getRequest()->getParams()); }
Bon c'est un peu condensé, dans mon bootstrap je charge seulement mon plugin
Hors ligne
Voilà, je teste donc le routage et la navigation avec ZEND.
Voici le code pour la route
Zend_Controller_Front::getInstance()->getRouter()->addRoute( 'nom_route', // nom de la route new Zend_Controller_Router_Route( ':nom' ,array( 'controller' => 'index', 'action' => 'test', 'nom' => null ) ) );
et pour la navigation
$href = Zend_Navigation_Page_Mvc::factory(array( 'action' => 'test' ,'route' => 'nom_route' ,'controller' => 'index' ,'params' => array('nom' => 'nomdelaroute') ))->getHref();
Le lien
printf('<p><a href="%s">Route nom_route</a></p>',$href);
Le lien obtenu est: "xxxx/nomdelaroute" ce qui correspond bien au rewriting que je veux obtenir.
Le problème c'est que si je clique sur le lien, j'ai le message:
An error occurred
Page not found
Exception information:
Message: Invalid controller specified (nomdelaroute)
Ce qui est normal, car le controller est "index" et son action "test" qui serait activé si on avait le lien suivant:
"xxxx/index/action"
Je voudrais donc que "xxxx/nomdelaroute" pointe en réalité sur "xxxx/index/action".
Comment faire ???
Merci de vos réponses.
Hors ligne