为什么当我转到第2页时,paginator还没有记住我的自定义参数?

时间:2008-09-29 08:51:20

标签: cakephp pagination paginator

在cakephp视图中使用paginator helper时,它不会记住为我的用途定制的url部分。

例如:

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

此处主持人是一个帮助我按该类型过滤的参数。但是按下分页符链接将不包含此链接。

6 个答案:

答案 0 :(得分:11)

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

<强> $ paginator-&gt;选项(阵列( 'URL'=&GT; $这 - &GT; passedArgs));

(我创建了这个问题和答案,因为这是一个很受欢迎的问题,我不得不挖掘答案,因为我无法记住它。)

答案 1 :(得分:4)

要添加Alexander Morland上面的答案,值得记住CakePHP 1.3中的语法已经改变,现在是:

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

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

答案 2 :(得分:0)

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

答案 3 :(得分:0)

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

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

这是我做的:

在我看来我把

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

在$ paginator-&gt; prev('&lt;&lt;&lt; Previous'之前。

这样做使得paginator上的下一个链接就像“ ... /页面:1 / START_DATE:2000-01-01%2000:00:00 / END_DATE:3000-01-01%2023:59:59 / payments_recieved:1"

然后在我的控制器上我只需要获取参数并将它们放在$ this-&gt;数据中,这样我的函数就会像往常一样继续:

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

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

答案 4 :(得分:0)

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

答案 5 :(得分:-1)

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

如果我使用这个tecnique:

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

我只获得:

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

和蛋糕失去了我的获取参数

你有替代tecnique吗?