2016-08-03 2 views
1

Я хочу показать общее количество записей запроса. Проблема в том, что я использую paginator, поэтому ... покажу только номер записи страницы, и мне нужно количество всех записей.получить общее количество записей, извлеченных с разбивкой по страницам в Cakephp

Это мой код:

public function index() 
{ 
    $paisFK = $this -> Auth -> User()['paisFK']; 

    $this->paginate['contain'] = ['Ciudades']; 
    $this->paginate['conditions'] = ['Ciudades.paisFK' => $paisFK]; 

    $complejos = $this->paginate($this->Complejos); 

    $this->set(compact('complejos')); 
    $this->set('_serialize', ['complejos']); 

    //Obtenemos la cantidad de complejos: 

    $number = $complejos->count(); 
    $this->set('number',$number); 
} 

Кто-то может мне помочь? Благодаря!

ответ

2

Компонент paginator добавляет детали страницы к параметрам объектов запроса, используя ключ paging, где данные вложены с использованием псевдонима объекта таблицы.

Проверить

debug($this->request->param('paging')); 

Эти данные легко доступны в шаблонах просмотра через Paginator хелперов param() метода.

$this->Paginator->param('count'); 

Кроме того, в зависимости от того, как вы хотите использовать значение, вы можете также использовать метод counter() с помощью пользовательского формата. Он поддерживает различные токены, включая {{count}}.

$this->Paginator->counter('There is a total of {{count}} record(s)...'); 

Смотрите также

+0

Я пытаюсь $ number = $ this-> Paginator-> param ('count'); $ this-> set ('number', $ number); но имеют ошибку: «Ошибка: вызов неопределенного метода Cake \ Controller \ Component \ PaginatorComponent :: param()» –

+0

@FederickJons Поскольку вы получаете доступ к [** компоненту **] (http: //book.cakephp. org/3.0/en/controllerlers/components.html), в вашем контроллере, а не [** помощник **] (http://book.cakephp.org/3.0/en/views/helpers.html), в вашем просмотреть шаблон. Как уже упоминалось, методы 'param()' относятся к помощнику вида paginator, то есть нет необходимости передавать какие-либо данные в представление самостоятельно, он уже будет доступен там автоматически. – ndm

0

есть полное решение, если вы будете следовать этому, я думаю, что решение здесь:

Контроллер:

public $paginate =[ 
    'limit' => 10, 
    'order' => [ 
     'tble.id' => 'asc' 
    ] 
]; 

public function initialize() 
{ 
    parent::initialize(); 
    $this->loadComponent('Paginator'); 
} 

public function index() 
{ 
    $product = TableRegistry::get('tble'); 
    $query = $product->find(); 
    $this->set(array('data'=>$query)); 
    $this->set('tble', $this->paginate($query)); 


    $this->render('index'); 
} 

Index.ctp:

<?= $this->Paginator->prev('<< Previous') ?> 
<?= $this->Paginator->next('Next >>') ?> 
<?= $this->Paginator->counter() ?> 

tble Является примером вашей таблицы БД.

Смежные вопросы