尝试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访问orpageCount或currentPageor ,我们必须显式设置。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