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

Posted

技术标签:

【中文标题】当我转到第 2 页时,为啥分页器不记得我的自定义参数?【英文标题】:Why doesnt paginator remember my custom parameters when I go to page 2?当我转到第 2 页时,为什么分页器不记得我的自定义参数? 【发布时间】:2010-09-13 23:06:22 【问题描述】:

在 cakephp 视图中使用分页器助手时,它不记得为我的使用自定义的部分 url。

例如:

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

这里 moderators 是一个帮助我按该类型过滤的参数。但是按分页器链接将不会包含此链接。

【问题讨论】:

【参考方案1】:

为了补充上面 Alexander Morland 的回答,值得记住的是,CakePHP 1.3 中的语法已经改变,现在是:

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

这在 CakePHP 书的pagination in views 部分有进一步的描述。

【讨论】:

【参考方案2】:

使用该参数“url”,您只能将首选字符串放在 url 中的字符串分页之前..

如果我使用这种技术:

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

我只得到:

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

Cake 丢失了我的 get 参数

你有替代技术吗?

【讨论】:

不要将参数作为 $_GET[] 传递...您的 url 应该类似于... url/controller/action/par1:val1/par2:val2【参考方案3】:

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

【讨论】:

【参考方案4】:

秘诀就是将这一行添加到您的视图中:

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

(我创建了这个问题和答案,因为这是一个被问得很多的问题,我一直不得不挖掘答案,因为我不记得了。)

【讨论】:

【参考方案5】:

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

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

这是我所做的:

在我看来,我认为

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

在 $paginator->prev('

这样做会使分页器上的下一个链接像“ .../page:1/start_date:2000-01-01%2000:00:00/end_date: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;

就是这样。分页适用于我的自定义查询。 :)

【讨论】:

【参考方案6】:

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

【讨论】:

以上是关于当我转到第 2 页时,为啥分页器不记得我的自定义参数?的主要内容,如果未能解决你的问题,请参考以下文章

在 codeigniter 上搜索和分页

分页尝试转到第 2 页时不显示结果(按名称和日期过滤结果)

为啥我在 codeigniter 中的分页不起作用? (404 未找到)

Jekyll 分页器不生成页面

角材料分页器不工作

Dompdf 为啥当您转到第二页时,文本向左移动