2013-06-13 16 views
11

Po uzyskaniu rekordów przy użyciu $this->paginate('Modelname') z pewną stroną limit, w jaki sposób uzyskać całkowitą liczbę pobranych rekordów?CakePHP: jak uzyskać całkowitą liczbę rekordów pobranych z paginacją

Chciałbym wyświetlić tę całkowitą liczbę na widoku, ale count($recordsRetrieved) zwraca numer wyświetlany tylko na bieżącej stronie. Tak więc, jeśli łączna liczba rekordów pobieranych jest 99 i limit jest ustawiony na 10, to zwraca 10, a nie 99.

Odpowiedz

17

Można debug($this->Paginator->params());

To daje

/* 
Array 
(
    [page] => 2 
    [current] => 2 
    [count] => 43 
    [prevPage] => 1 
    [nextPage] => 3 
    [pageCount] => 3 
    [order] => 
    [limit] => 20 
    [options] => Array 
     (
      [page] => 2 
      [conditions] => Array 
       (
       ) 
     ) 
    [paramType] => named 
) 
*/ 

ostateczny kod PHP> = 5.4:

$this->Paginator->params()['count'];

dla wersji PHP mniej niż 5.4:

$paginatorInformation = $this->Paginator->params(); 
$totalPageCount = $paginatorInformation['count']; 
0

Oto jak mam liczyć z mojego kontrolera *

ten jest dla CakePHP 2.3. Korzysta z pomocnika widoku, który zazwyczaj nie jest w sterowniku, ponieważ narusza MVC, ale w tym przypadku wydaje mi się sensowne utrzymanie kodu SUCHA.

// 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']; 

* Wiem, że PO pytani o z widzenia, ale ja figura jeśli odpowiedź ARZON Barua jest pomaganie ludziom (choć myślę, że to tylko informuje o żądanej liczby, a nie rzeczywiste liczone jako PO chce) to też może pomóc.

0

Ten sposób pobiera informacje o paginacji na kontrolerze.

class YourController extends Controller{ 
    $helpers = array('Paginator'); 
    public fn(){ 
    $view = new View(null); 
    var_dump($view->paginator->params()); 
    } 
} 
Powiązane problemy