Zend FR

Consultez la FAQ sur le ZF avant de poster une question

Vous n'êtes pas identifié.

#1 17-11-2009 13:22:49

Eureka
Membre
Date d'inscription: 18-07-2009
Messages: 81

[ZF 1.9] Zend Navigation et Zend Router

Bonjour,

Je suis confronté à des problématiques particulières, associant Zend_Route et Zend_Navigation.

Point de départ

Imaginons l'implémentation suivante via Zend_Navigation :

Code:

array(
    'label' => 'Profile',
    'route' => 'user',
    'controller' => 'profile',
    'action' => 'index',
),

et via Zend_Route :

Code:

array(
    'type' => 'Zend_Controller_Router_Route',
    'route' => 'user/:iduser/:nameuser/*',
    'defaults' => array(
        'module' => 'default',
        'controller' => 'profile',
        'action' => 'index',
    )
)

Utilisation de la route via l'aide de vue URL
La première problématique, est qu'en permettant l'utilisation de paramètres dans la route (*), dès que je spécifie via l'aide de vue URL les paramètres 'controller' et 'action' ils sont ajoutés à l'URL en tant que paramètre.

Code:

$this->url(array('controller' => 'profile', 'action' => 'index', 'iduser' => 2, 'nameuser' => 'John Doe'), 'user', true);
// renvoie : /user/2/John+Doe/controller/profile/action/index

En revanche si j'omets les 'controller' et 'action' dans l'appel de la méthode :

Code:

$this->url(array('iduser' => 2, 'nameuser' => 'John Doe'), 'user', true);
// renvoie : /user/2/John+Doe/

Ce point là est déjà relativement contraignant je trouve, je n'ai pas trouvé de manière pour que 'controller' et 'action' ne soient pas considérés comme des paramètres supplémentaires.

La solution, si on ne veut pas voir apparaître ces deux paramètres supplémentaires, est donc de les supprimer dans les paramètres d'appel à la méthode (comme ils sont définis dans la route 'user'  alors l'URL renvoyée sera la bonne).
Ce n'est pas trop problématique en soit si l'on n'a pas l'intention de modifier la route à l'avenir en y insérant l'action ou le controller (car cela nécessiterait de modifier tous les appels à l'aide de vue pour y ajouter l'action ou le controller le cas échéant ; c'est là que c'est problématique je trouve !).



Utilisation de la route via Zend Navigation
Là où le problème prend de l'ampleur, c'est que si l'on désire générer les URLs d'une application en fonction de Zend_Navigation, en utilisant la méthode 'getHref()' de Zend_Navigation_Page_Mvc, le problème de l'aide de vue URL revient au galop (puisque Zend_Navigation_Page_Mvc utilise cette aide de vue pour générer les aides de vues).

La solution précédente n'est pas applicable, car si l'on retire les paramètres 'controller' et 'action' de Zend_Navigation (cf. "Point de départ"), l'URL retournée sera bonne (puisqu'elle utilise la route 'user' qui elle connait le controller et l'action qu'elle doit utiliser), mais en revanche Zend_Navigation n'aura plus ces informations et la reconnaissance de la page courante comme active ne sera plus possible (Zend_Navigation ne sait pas interpréter un object Zend_*_Route et base sa reconnaissance d'URL sur les propres paramètres qui lui sont spécifié à lui)


Bref, je n'ai pas trouvé de solution pour conserver une URL acceptant des paramètres (*) sans que 'controller' et 'action' ne viennent s'ajouter à l'URL générée lors de l'utilisation de Zend_Navigation_Page_Mvc::getHref() ou de l'aide de vue URL si on lui spécifie ces deux informations.

Si quelqu'un a une idée...
Merci

Hors ligne

 

#2 17-11-2009 17:27:12

probitaille
Membre
Lieu: Montréal
Date d'inscription: 20-04-2009
Messages: 336
Site web

Re: [ZF 1.9] Zend Navigation et Zend Router

Je trouve que tu as très bien expliqué le problème.

En effet, cela fait un moment que j'ai le même problème que toi mais je me sauve de la situation en créant plusieurs routes pour une même page (1 route avec des paramètres et 1 route sans params, etc...)

C'est clair que ce n'est pas la bonne solution et je recommande vraiment pas.

Je viens donc relancer la question et le problème que tu as si bien décrit.

Hors ligne

 

Pied de page des forums

Propulsé par PunBB
© Copyright 2002–2005 Rickard Andersson
Traduction par punbb.fr

Graphisme réalisé par l'agence Rodolphe Eveilleau
Développement par Kitpages