我需要在控制器操作中使用某些分页变量.
如:
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等等....
我需要这些信息来动态生成元页面title和description页面列表的操作,例如pagetitle:第3页,共10页,用于American Recipes ...
感谢任何帮助.
尝试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是创建数据提供者的过程中,并重新设置中CSqlDataProvider的fetchData功能:
$pagination->setItemCount($this->getTotalItemCount());
Run Code Online (Sandbox Code Playgroud)
在创建数据提供程序期间,仅使用传递给pagination属性的值,如果我们不传递itemCount值,则使用默认值0.
所以,如果我们要访问offset或pageCount或currentPage或itemCount 之前调用fetchData我们必须设置itemCount明确.
但是,如果我们要调用后的值fetchData,则值已经正确填充由于呼叫setItemCount内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
Run Code Online (Sandbox Code Playgroud)