我正在使用CakePHP 2.3.6。在我的一个项目中,我想创建Ajax Pagination
。为此,我尝试了这个:
在我的AppController.php
:
public $helpers=array('Js','Paginator');
public $components=array('RequestHandler');
在我的Cntrl1Controller.php
:
public $paginate=array(
'Model1'=>array(
'limit'=>10,
'order'=>array('Model1.field1 DESC')
)
)
public function index(){
$this->paginate['Model1']['conditions']=array('Model1.field1'=>[value]);
$data1=$this->paginate('Model1');
$this->set('data1',$data1);
}
在我的Cntrl2Controller.php
:
public $paginate=array(
'Model2'=>array(
'limit'=>10,
'order'=>array('Model2.field1 DESC')
)
)
public function index(){
$this->paginate['Model2']['conditions']=array('Model2.field1'=>[value]);
$data2=$this->paginate('Model2');
$this->set('data2',$data2);
}
在我的View
文件中(两者都是index.ctp
):
<ul class="pagination">
<?php
echo "<li>".$this->Paginator->prev('Prev')."</li>".$this->Paginator->numbers(array('tag'=>'li','currentClass'=>'active','currentTag'=>'a','separator'=>null))."<li>".$this->Paginator->next('Next')."</li>";
?>
</ul>
在我的default layout
:
<head>
<?php
$this->Paginator->options(
array(
'update'=>'#content','evalScripts'=>true,
'before'=>$this->Js->get('#busy-indicator')->effect('fadeIn', array('buffer'=>false)),
'complete'=>$this->Js->get('#busy-indicator')->effect('fadeOut', array('buffer'=>false))
)
);
?>
</head>
<body>
.
.
.
<?php
echo $this->Html->image('indicator.gif',array('id'=>'busy-indicator'));
?>
.
.
.
<?php echo $this->Js->writeBuffer();?>
</body>
现在,我的问题是,分页工作正常,所有数据都成功返回。但是,它不是AJAX Pagination
,我的意思是,当我浏览页面时,整个页面会重新加载,而不仅仅是content <div>
。但是,我希望只重新加载div
,而不是其他任何内容。
那么,你们觉得怎么样?这里有什么问题 ?我该怎么办?
请帮帮我。
由于
答案 0 :(得分:1)
我想,您忘了在页面底部添加缓冲区代码。
echo $ this-&gt; Js-&gt; writeBuffer(); //编写缓存脚本
并检查您的浏览器控制台可能存在一些js问题。