Consultez la FAQ sur le ZF avant de poster une question
Vous n'êtes pas identifié.
Pages: 1
Bonjour,
Il semble impossible d'utiliser Zend_Navigation avec Zend_Rest_Route.
Pour illustrer le problème avec un exemple simple, admettons que nous avons une ressource "Album".
Lorsque nous éditons cette ressource nous avons plusieurs onglets : "Informations générales" et "Photos", qui chacun contient son propre formulaire, mais le tout représente bien la ressource "Album".
Pour gérer ces onglets, facile avec Zend_Navigation, je vais avoir quelque chose du style (en respectant Rest) :
<album label="Albums" title="Albums" action="list" controller="albums"> <pages> <get_album id="get_album" label="Afficher Album" title="Afficher Album" action="get" controller="albums" /> <edit_album id="edit_album" label="Editer album" title="Editer album" action="edit" controller="albums"> <params n="infos" /> <pages> <edit_album_infos label="Informations générales" title="Informations générales" action="edit" controller="albums"> <params n="infos" /> </edit_album_infos> <edit_album_photos label="Photos" title="Photos" action="edit" controller="albums"> <params n="photos" /> </edit_album_photos> </pages> </edit_album> </pages> </album>
Pour le routeur, idem, c'est simple :
protected function _initRestRoute() { $this->bootstrap('Request'); $front = $this->getResource('FrontController'); $restRoute = new Zend_Rest_Route($front, array(), array( 'front' => array( 'albums' ) ); $front->getRouter()->addRoute('rest', $restRoute); }
Lorsque nous éditerons par ex. les photos d'un album nous aurons comme url avec REST : http://www.monsite.com/albums/1/edit?n=photos
Jusque là ok.
Dans la page edit.phtml, j'affiche donc mon menu pour mes onglets :
<?php $editAlbumMenu = $this->navigation()->findBy('id', 'edit_album'); echo $this->navigation() ->menu() ->setMaxDepth(0) ->setRenderParents(false) ->render($editAlbumMenu); ?>
Sauf que, comment faire savoir à Zend_Navigation que nous utilisons des routes REST ? Parce que bêtement que ce soit dans le fil d'ariane ou dans le menu, il va me générer des urls "http://www.monsite.com/albums" de partout.
Les urls REST étant particulières (mais logiques :p), par exemple l'id de la ressource à éditer apparait avant l'action (/albums/1/edit), il devrait exister un moyen de spécifier à Zend Navigation que nous utilisons des routes REST.
De plus, le paramètre "n" qui est censé exister dans l'url générée n'existe jamais. Par contre l'élement "li" de l'onglet photos prend bien la classe "active".
Tout ceci est bien contraignant, et il me semble aujourd'hui impossible avec le ZF de mettre en place une navigation REST correctement en utilisant les composants prévus à cet effet.
Certains se sont-ils déjà penchés sur le problème ? Ou que prépare Zend pour fournir un système fiable pour pouvoir gérer une application/API dans les mêmes controlleurs et une bonne intégration de Zend Navigation ?
Tout ceci est bien dommage, bien que d'habitude je fasse l'éloge de Zend, je trouve que les composants sortent un peu vite et qu'il manque un petit soucis du détail. Ce qui est censé accélérer le dev me demande aujourd'hui bien plus de temps que prévu, et je me rend compte au final que je ne vais peut-être pas pouvoir utiliser les composants que Zend me proposent.
Merci,
A+ benjamin.
Dernière modification par Delprog (23-11-2009 11:52:54)
Hors ligne
Pages: 1