8

我的控制器操作中需要某些分页变量。

如:

1.当前页码

2.当前页面偏移量

3.显示的总记录

即显示 2005 条记录中的 31 到 40 条

我尝试了以下方法:

$dataProvider = NodesTerms::getNodesDataFromTerms($nodeId) ;     
  $pagination = $dataProvider->getPagination();
  var_dump($pagination->getPageCount());
  //var_dump($pagination->currentPage);

我可以得到分页对象,但零(0)$pagination->currentPage$pagination->offset等......

我需要这些信息来动态生成元页面titledescription带有页面列表的操作,例如 pagetitle: page 3 of 10 for American Recipes...

感谢您对此的任何帮助。

4

2 回答 2

5

尝试itemCount在你的明确设置dataProvider

'pagination'=>array(
    'pageSize'=>10,
    'itemCount'=>$count
)

或者使用一个新CPagination对象:

$pagination = new CPagination($count);

$dataProvider = new CSqlDataProvider($sql, array(
    // ... other config
    'pagination' => $pagination
));

这是如何工作的:

分页itemCount是在创建数据提供者期间设置的,并再次CSqlDataProvider'fetchData函数中设置:

    $pagination->setItemCount($this->getTotalItemCount());

在创建 data-provider 期间,仅使用传递给pagination属性的值,如果我们不传递itemCount值,则使用默认值 of 0
因此,如果我们想在调用之前offset访问orpageCountcurrentPageor ,我们必须显式设置。itemCount fetchDataitemCount

但是,如果我们在调用之后想要这些值,fetchData那么由于对setItemCountwithin的调用,这些值已经正确填充fetchData

一个清晰的例子(itemCount在数据提供者创建期间没有传递):

$dataProvider = NodesTerms::getNodesDataFromTerms($nodeId);     
$pagination = $dataProvider->getPagination();
var_dump($pagination->getPageCount()); // this will be zero

$data=$dataProvider->getData(); // getData calls fetchData()

var_dump($pagination->getPageCount()); // now this will be correct value 
于 2012-11-07T17:56:36.643 回答
0

getCurrentPage 返回“当前页面的从零开始的索引”

http://www.yiiframework.com/doc/api/1.1/CPagination#getCurrentPage-detail

所以如果你在第一页,它应该返回 0。

并且您知道页面大小和足以让您生成页面标题的记录总数。

于 2012-11-07T15:08:13.483 回答