创建自定义CakePHP分页路径

时间:2010-10-26 15:57:51

标签: php ajax cakephp pagination

我正在尝试在CakePHP中使用Ajax分页并且已经读过你可以在URL中传递变量但是我似乎无法设置路由。当我点击下一步时,我得到一个关于该类别不存在的错误(因为我创建了一个自定义验证方法),因为没有遵循该路线。

我希望$paginator->next()$paginator->prev()遵循此路线方案 http://mysite.com/computers/page:2http://mysite.com/computers/mac/page:2。但是无论我将分页URL设置为什么,它总是最终成为http://mysite.com/Products/index/page:2。我尝试在$paginator->options()以及$paginator->next()$paginator->prev()中设置网址但是它无效。关于如何制作cakephp paginator的任何想法都遵循我的自定义路线?

编辑:

这是我在视图中的$ paginator代码。

$paginator->options(array(

    'update' => '#products',
    'url' => array('controller'=>'Products','action'=>'index','pass'=>$this->params['pass']),
    'evalScripts' => true,
    'before' => $this->Js->get('#busy-indicator')->effect('fadeIn', array('buffer' => false)),
    'complete' => $this->Js->get('#busy-indicator')->effect('fadeOut', array('buffer' => false)),
));
     echo $paginator->prev("Prev",$this->passedArgs);
     echo $paginator->numbers(array('separator'=>' '));
     echo $paginator->next("Next",$this->passedArgs);

2 个答案:

答案 0 :(得分:1)

我明白了。我看到有人对此表示赞同,所以我将展示我的决议,希望能为他们节省几天的挫败感,试图找到解决办法。

在我的index.ctp中,我将$ paginator->选项路径设置为我需要的网址。

$paginator->options(array(

    'update' => '#products',
    'url' => array('path'=>$this->params['path']),
    'evalScripts' => true,
    'before' => $this->Js->get('#busy-indicator')->effect('fadeIn', array('buffer' => false)),
    'complete' => $this->Js->get('#busy-indicator')->effect('fadeOut', array('buffer' => false)),
));

编辑: 我刚刚发现这只有在你没有在url字段中添加任何内容时才有效...: - (

编辑2: 我最终不得不在我的视图中创建$ pagination。

$paginator->options(array(

    'update' => '#products',
    'url' => '/'.$this->here,
    //'evalScripts' => true,
    'before' => $this->Js->get('.clothing')->effect('fadeOut', array('speed' => 'slow')),
    'complete' => $this->Js->get('.clothing')->effect('fadeIn', array('speed' => 'slow')),
));
     echo str_replace('/Products/index','',$paginator->prev("Prev "));
     echo str_replace('/Products/index','',$paginator->numbers(array('separator'=>' - ')));
     echo str_replace('/Products/index','',$paginator->next(" Next"));

答案 1 :(得分:0)

如果设置了paginator选项,它应该可以解决问题。试试这个:

$options = array('update'=>'results','url'=> array('controller' => 'companies', 'action' => 'dashboard', 'admin' => true));
$paginator->options($options);

这对我来说无处不在。

仅供参考,我使用jQuery的'update'参数来更新各个领域。