我需要在控制器操作中使用某些分页变量。
如:
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)....
我需要此信息来动态生成元页面title
和description
与页面列表的操作,例如pagetitle:第3页,共10页,用于美国食谱......
感谢您的任何帮助。
答案 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}}或pageCount
或currentPage
或itemCount
,我们必须设置明确地fetchData
。
但是,如果我们在调用itemCount
之后需要这些值,那么由于fetchData
内的setItemCount
调用,这些值已经正确填充。
清晰的示例(在数据提供程序创建期间未通过fetchData
):
itemCount
答案 1 :(得分:0)
getCurrentPage返回“当前页面从零开始的索引”
http://www.yiiframework.com/doc/api/1.1/CPagination#getCurrentPage-detail
所以如果你在第一页,它应该返回0。
如您所知,页面大小和足以让您生成页面标题的记录总数。