Zend url查看助手 - 将现有的params保持在相反的路径中

时间:2009-06-12 17:11:34

标签: php zend-framework url-routing

目前在我的ZF项目中有一个像这样的URL结构:

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

当我生成分页时,我使用URL帮助程序,如下所示:

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

生成如下网址:

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

我想要做的是使用自定义路由来获得更好的网址,如下所示:

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

但是,当我尝试在视图助手中使用此路径时:

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

它抛出一个错误,因为我没有在参数中指定news_page。

如何解决这个问题,并告诉网址助手使用这些参数的“当前”值?

1 个答案:

答案 0 :(得分:6)

如果当前请求中存在参数,则url帮助程序将使用现有参数。在您的特定情况下,似乎未在请求对象中设置news_page param。为路线中的news_page参数设置默认值可以解决您的问题。

因此,您的路线定义应如下所示:

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