来自DataProvider的Yii分页变量

Rah*_*lia 8 yii

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

如:

1.当前页码

2.当前页面偏移量

3.显示总记录

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

我尝试了以下方法:

$dataProvider = NodesTerms::getNodesDataFromTerms($nodeId) ;     
  $pagination = $dataProvider->getPagination();
  var_dump($pagination->getPageCount());
  //var_dump($pagination->currentPage);
Run Code Online (Sandbox Code Playgroud)

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

我需要这些信息来动态生成元页面titledescription页面列表的操作,例如pagetitle:第3页,共10页,用于American Recipes ...

感谢任何帮助.

boo*_*dev 5

尝试itemCount在您的dataProvider:中明确设置:

'pagination'=>array(
    'pageSize'=>10,
    'itemCount'=>$count
)
Run Code Online (Sandbox Code Playgroud)

或使用新CPagination对象:

$pagination = new CPagination($count);

$dataProvider = new CSqlDataProvider($sql, array(
    // ... other config
    'pagination' => $pagination
));
Run Code Online (Sandbox Code Playgroud)

这是如何工作的:

分页的itemCount是创建数据提供者的过程中,并重新设置CSqlDataProviderfetchData功能:

    $pagination->setItemCount($this->getTotalItemCount());
Run Code Online (Sandbox Code Playgroud)

在创建数据提供程序期间,仅使用传递给pagination属性的值,如果我们不传递itemCount值,则使用默认值0.
所以,如果我们要访问offsetpageCountcurrentPageitemCount 之前调用fetchData我们必须设置itemCount明确.

但是,如果我们要调用后的值fetchData,则值已经正确填充由于呼叫setItemCountfetchData.

清晰的示例(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 
Run Code Online (Sandbox Code Playgroud)