2009-12-14 8 views
0

J'ai défini mes routes dans mon fichier application.ini qui fonctionne pour tous ceux que j'ai configurés. Le problème est quand il y a plusieurs actions dans ce contrôleur et j'essaie d'utiliser les routes dans d'autres actions.Zendframework Routing Issue

Par exemple, j'ai créé ce qui suit dans mon application.ini pour la pagination et la colonne de tri

resources.router.routes.search.route = "search/:page/:col/:sort/:limit/" 
resources.router.routes.search.defaults.controller = search 
resources.router.routes.search.defaults.page = 1 
resources.router.routes.search.defaults.col = time 
resources.router.routes.search.defaults.sort = default 
resources.router.routes.search.defaults.limit = 50 
resources.router.routes.search.reqs.page = \d+ 
resources.router.routes.search.reqs.col = \w+ 
resources.router.routes.search.reqs.sort = \w+ 
resources.router.routes.search.reqs.limit = \d+ 

Les travaux ci-dessus quand je suis sur l'action par défaut de cette page comme

www.mywebsite.com/search/2/ 

Souhaiterait la deuxième page des résultats. Mais si j'essaie la même chose sur une autre action,

www.mywebsite.com/search/action/2 

Il montre juste une page blanche. J'ai essayé de créer ses propres paramètres dans l'ini et cela n'a pas fonctionné. J'ai déjà rencontré ce problème auparavant, mais j'ai juste abandonné et séparé les choses en différents contrôleurs mais je préfère avoir des actions différentes.

Toute aide serait grandement appréciée.

Matt

Répondre

0

search/:page/:col/:sort/:limit/ ne correspond pas à www.mywebsite.com/search/action/2. Votre itinéraire recherche search/ suivi d'un chiffre (\d) représentant le numéro de page; Toutefois, vous demandez search/ suivi de la chaîne action. Je suggère d'ajouter un autre paramètre à votre itinéraire: search/:action/:page/:col/:sort/:limit, par défaut action à index.

La demande de la première page de l'action par défaut reste la même (search). La demande de la page 2 de la route par défaut sera maintenant search/index/2/, mais vous pouvez maintenant spécifier une action différente (search/action/2).

+0

Merci pour vos commentaires, je l'ai essayé en fait déjà, mais a fini avec les mêmes résultats. La chose la plus amusante est que je refais la recherche, elle sera par défaut à cette deuxième page, mais quand les paramètres de l'url sont là, la page ne se chargera pas. Je suis presque à un point où je vais le séparer à son propre contrôleur. Le seul autre routage que j'ai est similaire mais pour un contrôleur différent. Y aurait-il une meilleure façon d'implémenter la pagination sur tous les contrôleurs et actions? –

+0

Voici ce que j'ai récemment essayé basé sur un autre message que j'ai trouvé mais cela ne fonctionne toujours pas. La chose la plus étrange, c'est que si je recherche sur cette page, puis cliquez sur la pagination, il apparaît vide, mais si je recherche à nouveau par défaut à la page deux, car il peut lire les paramètres dans le navigateur, juste la page pour une raison quelconque . Je vais ajouter mon autre partie de mon application.ini ci-dessous ce commentaire car je suis à court de place dans ce commentaire –

+0

resources.router.routes.searchadvanced.route = "search/advanced /: page /: limite /" resources.router.routes.searchadvanced.defaults.controller = search resources.router.routes.searchadvanced.defaults.action = avancé resources.router.routes.searchadvanced.defaults.page = 1 resources.router.routes.searchadvanced.defaults.limit = 25 resources.router.routes.searchadvanced.reqs.page = \ d + resources.router.routes.searchadvanced.reqs.limit = \ d + Le poste qui m'a donné cette idée http://stackoverflow.com/questions/1850558/php-zend-route-config-ini-similar-patterns –

0

Il s'avère que j'ai complètement oublié de définir la variable pour le terme de recherche. Quand sur une nouvelle page il ne maintenait pas le terme de recherche original, et là mon code faisait ce qu'il était supposé faire, et n'affichait aucune sortie.

Pour ceux qui pensent avoir rencontré des problèmes similaires, ils peuvent trouver ce lien très utile.

link text