当我转到第 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 页时,为啥分页器不记得我的自定义参数?的主要内容,如果未能解决你的问题,请参考以下文章