当您使用$this->paginate('Modelname')
with some page检索记录时limit
,您如何获得检索到的记录总数?
我想在视图上显示这个总数,但count($recordsRetrieved)
返回仅在当前页面上显示的数字。因此,如果检索到的记录总数为 99 并且limit
设置为 10,则返回 10,而不是 99。
当您使用$this->paginate('Modelname')
with some page检索记录时limit
,您如何获得检索到的记录总数?
我想在视图上显示这个总数,但count($recordsRetrieved)
返回仅在当前页面上显示的数字。因此,如果检索到的记录总数为 99 并且limit
设置为 10,则返回 10,而不是 99。
你可以debug($this->Paginator->params());
这会给你
/*
Array
(
[page] => 2
[current] => 2
[count] => 43
[prevPage] => 1
[nextPage] => 3
[pageCount] => 3
[order] =>
[limit] => 20
[options] => Array
(
[page] => 2
[conditions] => Array
(
)
)
[paramType] => named
)
*/
PHP >=5.4 的最终代码:
$this->Paginator->params()['count'];
对于低于 5.4 的 PHP 版本:
$paginatorInformation = $this->Paginator->params();
$totalPageCount = $paginatorInformation['count'];
要获得答案,请访问以下链接 http://book.cakephp.org/2.0/en/controllers/request-response.html
使用pr($this->request->params)
你会发现所有分页的东西
对于蛋糕 3.x
您可以使用方法 getPagingParams
例子:
debug($this->Paginator->getPagingParams());
输出:
[
'users' => [
'finder' => 'all',
'page' => (int) 1,
'current' => (int) 5,
'count' => (int) 5,
'perPage' => (int) 1,
'prevPage' => false,
'nextPage' => true,
'pageCount' => (int) 5,
'sort' => null,
'direction' => false,
'limit' => null,
'sortDefault' => false,
'directionDefault' => false,
'scope' => null
]
]
这是我从控制器获得计数的方法*
这是针对 CakePHP 2.3 的。它使用了一个视图助手,这在控制器中通常是一个禁忌,因为它违反了 MVC,但在这种情况下,我认为保持代码 DRY 是有意义的。
// Top of file
App::uses('PaginatorHelper', 'View/Helper');
// Later in controller method
$paginatorHelper = new PaginatorHelper(new View(null));
$records = $this->paginate();
$count = $paginatorHelper->params()['count'];
*我知道 OP 从视图中询问,但我认为 Arzon Barua 的回答是否对人们有所帮助(尽管我认为它只告诉您请求的计数,而不是 OP 想要的实际计数),那么这可能也有帮助。
这种方式是通过控制器获取分页信息。
class YourController extends Controller{
$helpers = array('Paginator');
public fn(){
$view = new View(null);
var_dump($view->paginator->params());
}
}