CakePHP Pagination将不允许公共$ paginate变量根据条件进行更改

时间:2014-08-30 01:59:18

标签: php mysql cakephp pagination cakephp-2.3

我正在使用CakePHP v2.4.1,并且我试图通过相同的控制器操作(索引)在同一页面上对两个单独的模型进行分页

我想在一个页面上分页一个NewsPost,并且EventPost也在同一页面上单独分页。这是不好的做法,还是可以设置条件来更改$ this-> paginate变量以正确分页,具体取决于它所在的模型?

我的控制器看起来像这样:

public $uses = array(
    'NewsPost',
    'NewsPostComment',
    'EventPost',
    'EventPostComment'
);

public $paginate = array(
'limit' => 9,
'order' => array(
    'NewsPost.created' => 'desc'
), 
'recursive' => 1,
);

public function index() {       

  $this->paginate = array(
    'limit' => 1,
    'order' => array(
        'EventPost.created' => 'desc'
    ), 
    'recursive' => 1,
  ); 

$this->Paginator->settings = $this->paginate;
$newsPosts = $this->paginate('NewsPost');

$eventPosts = $this->EventPost->find('all');
$this->set(array('newsPosts' => $newsPosts, 'eventPosts' => $eventPosts));

内置的蛋糕分页器似乎不允许分离单独模型的选项,或者我错了吗?

以下是分页视图:

<?php 
$params = $this->Paginator->params();
if ($params['count'] > 0): ?>
<div class="pagination-totals pull-left">
    <?php echo $this->Paginator->counter(array('format' => __('{:start} to {:end} of {:count}'))) ?>
</div>
<?php endif; ?>
<?php echo $this->Paginator->numbers(array(
    'class' => 'pull-right',
    'prev'     => '<',
    'next'     => '>',
)); 
?>

问题是,当我为NewsPost选择第二页时,它会切换到EventPost的第二页,那么如何使用CakePHP分页来区分同一页面上的两个单独模型呢?

由于

1 个答案:

答案 0 :(得分:0)

您的页面中只有一个params命名页面,因此结果正常。

您必须使用ajax请求和分离的操作

来处理此问题