2009-06-12 7 views
0

inversée Au moment de mon projet ZF ont une structure d'URL comme ceci:aide Zend vue url - maintenir params existants dans une voie

/news/index/news_page/1/blog_page/2 

Quand je produis mon pagination J'utilise l'aide d'URL comme suit:

<?php echo $this->url(array('blog_page'=>3)); ?> 

ce qui génère une URL comme ceci:

/news/index/news_page/1/blog_page/3 

ce que je voudrais faire est d'utiliser un itinéraire personnalisé pour avoir belle URL r, quelque chose comme ceci:

new Zend_Controller_Router_Route(
    'news/:news_page/:blog_page', 
    array('controller' => 'news', 'action' => 'index') 
); 

Cependant, lorsque je tente une utilisation de cette route dans l'aide de vue:

<?php echo $this->url(array('blog_page'=>3), 'newsIndex'); ?> 

Il renvoie une erreur parce que je ne l'ai pas spécifié news_page dans les params.

Comment est-ce que je peux contourner ceci, et dire à l'aide d'url d'employer les valeurs «actuelles» pour ces params?

Répondre

6

L'assistant d'URL utilisera un paramètre existant s'il existe dans la demande en cours. Il semble que, dans votre cas, le paramètre news_page n'est pas défini dans l'objet de requête. Définir une valeur par défaut pour le paramètre news_page dans votre itinéraire devrait résoudre votre problème.

Ainsi, la définition de votre itinéraire devrait ressembler à ceci:

new Zend_Controller_Router_Route(
    'news/:news_page/:blog_page', 
    array('controller' => 'news', 'action' => 'index', 'news_page' => 1) 
); 
+0

Merci Jason, c'est exactement ce qui se passait. –

Questions connexes