是否可以使用带有$ _GET参数的paginator?
例如我有这样的路线:
$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]+"
)
));
我正在通过ajax提出这样的请求:
http://localhost/en/gallery?dep=9&cat=27&towns=1
但是从结果返回的链接没有?dep = 9& cat = 27& towns = 1
如何强制zend paginator在分页链接生成中使用传递的$ _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/9/27/1 http://localhost/en/gallery/3/9/27/1 http://localhost/en/gallery/4/9/27/1
就像他们在路线内定义一样 等...
谢谢
答案 0 :(得分:1)
视图URL帮助器将始终输出params作为URL的一部分(由正斜杠分隔),据我所知,它不支持GET参数格式。
我不知道Routes_Categories类的作用,但是使用默认的ZF路由类试试这个:
$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,category和age是必需的,dep,cat和towns是可选的。请记住,如果你想设置cat,你必须设置dep,否则路由会混淆哪个变量是什么。
在您的控制器中通过以下命令访问页面参数,默认值为1。
$page = $this->_getParam('page', 1);
通过AJAX访问网址:http://localhost/en/gallery/2/9/27/1
如果您需要页面参数,请使用命名参数:http://localhost/en/gallery/2/9/27/1/page/2
要使此路由在您的分页中起作用,您需要更新分页器视图控件以使用正确的路径。请参阅:http://framework.zend.com/manual/en/zend.paginator.usage.html#zend.paginator.usage.rendering.example-controls
查找输出URL的代码,并将路由名称添加到URL视图助手。所以替换这样的代码:
<?php echo $this->url(array('page' => $this->previous)); ?>
使用:
<?php echo $this->url(array('page' => $this->previous), 'ajax_gallery'); ?>