为什么转到第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:.../...
和蛋糕失去了我的参数
我们有替代技术吗?