为什么转到第2页时分页器不记得我的自定义参数?

时间:2020-03-06 14:52:00  来源:igfitidea点击:

在cakephp视图中使用分页器助手时,它不会记住我为自己使用而定制的部分URL。

例如:

http://example.org/users/index/moderators/page:2/sort:name/dir:asc

这里的主持人是一个参数,可以帮助我按该类型进行过滤。但是,按分页器链接不会包含此链接。

解决方案

秘密是在视图中添加以下行:

$ paginator-> options(array('url'=> $ this-> passedArgs));

(我创建了这个问题和答案,因为这是一个经常被问到的问题,由于我不记得了,所以我一直不得不找出答案。)

从视图中,$ this-> passedArgs是执行此操作的首选方法。

你救了我!这对我很有帮助,谢谢。

我需要一种将最初通过post($ this-> data)发送的参数传递给分页组件的方法,因此我的自定义查询将继续使用它们。

这是我所做的:

我认为

$paginator->options(array('url'=>$this->data['Transaction']));

在$ paginator-> prev('<< Previous'之前。

这样做可以使分页器上的下一个链接像"
... /页面:1 /开始日期:2000-01-01%2000:00:00 /结束日期:3000-01-01%2023:59:59 / payments_recieved:1"

然后,在我的控制器上,我只需要获取参数并将其放入$ this-> data中,这样我的功能就可以像往常一样继续:

foreach($this->params['named'] as $k=>$v)
{
    /*
     * set data as is normally expected
     */
    $this->data['Transaction'][$k] = $v;
}

就是这样。分页可与我的自定义查询一起使用。 :)

这里的选项是一个很好的线索...我们还可以在cakephp.org/view/166/Pagination-in-Views中查看关于cakePHP分页的更多信息

使用该参数" url",我们只能将首选字符串放在url中的字符串分页之前。

如果我使用此技术:

$urlpagin = '?my_get1=1&my_get2=2';
$paginator->options = array('url'=>$urlpagin);

我只获得:

url/controller/action/?my_get1=1&my_get2=2/sort:.../...

和蛋糕失去了我的参数

我们有替代技术吗?