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

Cia*_*lty 0 php zend-framework url-routing

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

/news/index/news_page/1/blog_page/2
Run Code Online (Sandbox Code Playgroud)

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

<?php echo $this->url(array('blog_page'=>3)); ?>
Run Code Online (Sandbox Code Playgroud)

哪个生成这样的URL:

/news/index/news_page/1/blog_page/3
Run Code Online (Sandbox Code Playgroud)

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

new Zend_Controller_Router_Route(
  'news/:news_page/:blog_page', 
  array('controller' => 'news', 'action' => 'index')
);
Run Code Online (Sandbox Code Playgroud)

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

<?php echo $this->url(array('blog_page'=>3), 'newsIndex'); ?>
Run Code Online (Sandbox Code Playgroud)

它抛出一个错误,因为我没有在params中指定news_page.

我怎样才能解决这个问题,并告诉网址助手使用这些参数的"当前"值?

jas*_*son 6

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

所以,你的路线定义应该是这样的:

new Zend_Controller_Router_Route(
  'news/:news_page/:blog_page', 
  array('controller' => 'news', 'action' => 'index', 'news_page' => 1)
);
Run Code Online (Sandbox Code Playgroud)