Zend framework Zend Framework paginator force$\u获取参数用法

Zend framework Zend Framework paginator force$\u获取参数用法,zend-framework,routing,Zend Framework,Routing,是否可以将paginator与$\u GET参数一起使用 例如,我有这样一条路线: $router->addRoute('ajax_gallery', new Routes_Categories( '/:lang/:category/age/:dep/:cat/:towns', array( "page" => 1, "dep" => 0, "cat" => 0, "towns" => 0 ), array( "dep" => "[0-9]+", "cat"

是否可以将paginator与$\u GET参数一起使用

例如,我有这样一条路线:

$router->addRoute('ajax_gallery',
new Routes_Categories(
'/:lang/:category/age/:dep/:cat/:towns',
array(
"page" => 1,
"dep" => 0,
"cat" => 0,
"towns" => 0
),
array(
"dep" => "[0-9]+",
"cat" => "[0-9]+"
)

));
<?php echo $this->url(array('page' => $this->previous)); ?>
我通过ajax发出如下请求:

但是从结果返回的链接没有?dep=9&cat=27&towns=1

如何强制zend paginator在分页链接生成中使用传递的$\u GET参数

因此,返回的链接是:

http://localhost/en/gallery/2?dep=9&cat=27&towns=1 http://localhost/en/gallery/3?dep=9&cat=27&towns=1 http://localhost/en/gallery/4?dep=9&cat=27&towns=1 http://localhost/en/gallery/2?dep=9&cat=27&towns=1 http://localhost/en/gallery/3?dep=9&cat=27&towns=1 http://localhost/en/gallery/4?dep=9&cat=27&towns=1 等等

甚至

http://localhost/en/gallery/2/9/27/1 http://localhost/en/gallery/3/9/27/1 http://localhost/en/gallery/4/9/27/1 http://localhost/en/gallery/2/9/27/1 http://localhost/en/gallery/3/9/27/1 http://localhost/en/gallery/4/9/27/1 就像它们是在路线内部定义的一样 等等


谢谢

查看URL帮助程序将始终输出参数作为URL的一部分(用斜杠分隔),据我所知,它不支持GET参数格式

我不知道Routes_Categories类做什么,但是使用默认的ZF route类可以尝试以下方法:

$route = new Zend_Controller_Router_Route(
    '/:lang/:category/:age/:dep/:cat/:towns/*',
    array(
        "dep" => 0,
        "cat" => 0,
        "towns" => 0
    ),
    array(
        "dep" => "[0-9]+",
        "cat" => "[0-9]+"
    )
);
$router->addRoute('ajax_gallery', $route);
*支持路由后的任何其他命名参数。以上假设lang、类别和年龄是必需的,dep、cat和towns是可选的。请记住,如果要设置cat,则必须设置dep,否则路线将混淆哪个变量是什么

在控制器中,通过以下方式访问页面参数,默认设置为1

$page = $this->_getParam('page', 1);
通过AJAX访问URL,如下所示:

如果需要页面参数,请使用命名参数:

要在分页中使用此路由,您需要更新paginator视图控件以使用正确的路由。见:

查找输出URL的代码,并将路由名称添加到URL视图帮助器中。因此,请像这样替换代码:

$router->addRoute('ajax_gallery',
new Routes_Categories(
'/:lang/:category/age/:dep/:cat/:towns',
array(
"page" => 1,
"dep" => 0,
"cat" => 0,
"towns" => 0
),
array(
"dep" => "[0-9]+",
"cat" => "[0-9]+"
)

));
<?php echo $this->url(array('page' => $this->previous)); ?>

与: