来自DataProvider的Yii分页变量

时间:2012-11-06 15:46:47

标签: yii

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

如:

1.当前页码

2.当前页面偏移量

3.显示总记录

即。显示2005年31至40条记录

我尝试了以下内容:

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

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

我需要此信息来动态生成元页面titledescription与页面列表的操作,例如pagetitle:第3页,共10页,用于美国食谱......

感谢您的任何帮助。

2 个答案:

答案 0 :(得分:5)

尝试在dataProvider中明确设置itemCount

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

或使用新的CPagination对象:

$pagination = new CPagination($count);

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

这是如何运作的:

分页的itemCount是在创建数据提供者期间设置的,并且再次in CSqlDataProvider's fetchData功能:

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

在创建数据提供程序期间,仅使用传递给pagination属性的值,如果我们未传递itemCount值,则使用默认值0
因此,如果我们想要在offset之前调用{/ 1}}或pageCountcurrentPageitemCount ,我们必须设置明确地fetchData

但是,如果我们在调用itemCount之后需要这些值,那么由于fetchData内的setItemCount调用,这些值已经正确填充。

清晰的示例(在数据提供程序创建期间未通过fetchData):

itemCount

答案 1 :(得分:0)

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

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

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

如您所知,页面大小和足以让您生成页面标题的记录总数。

相关问题