我正在尝试在CakePHP中使用Ajax分页并且已经读过你可以在URL中传递变量但是我似乎无法设置路由。当我点击下一步时,我得到一个关于该类别不存在的错误(因为我创建了一个自定义验证方法),因为没有遵循该路线。
我希望$paginator->next()
和$paginator->prev()
遵循此路线方案
http://mysite.com/computers/page:2
或http://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);
答案 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'参数来更新各个领域。