Проблема разбиения на страницы PHP торта

У меня есть контроллер и вид. В представлении будут отображаться все записи из базы данных. Также есть поиск по форме вверху этой страницы просмотра. Если мы укажем условие поиска и отправим форму, в представлении будут отображаться только записи, полученные в результате этого поиска. Результаты разбиты на страницы. Но проблема в том, что когда я выполняю поиск и нажимаю на следующую страницу результатов, он показывает все результаты.

Вот мой код.

Посмотреть страницу index.ctp

echo $form->create('Apartment', array('action'=>'index'));
echo form->input('searchBy',array('type'=>'select','options'=>array('Id'=>'Id','User'=>'User','time'=>'Updated time')));
echo $form->input('query', array('type'=>'text', 'label'=>'Search Term'));
echo $form->end(array('name'=>'submit', 'label'=>'Search'));


<?php echo $this->element('pagination'); ?>

<th class="actions"><?php __('');?></th>
<th><?php echo $paginator->sort('id');?></th>
<th><?php echo $paginator->sort('Headline');?></th>
<th><?php echo $paginator->sort('Campaign','Campaign.Name');?></th>
<th><?php echo $paginator->sort('User', 'User.name');?></th>
<th><?php echo $paginator->sort('modified');?></th>
<th><?php echo $paginator->sort('status');?></th>
<th class="actions"><?php __('Actions');?></th>

Индексная функция контроллера

if (!empty($this->data)) {
// Search 
switch($this->data['Apartment']['searchBy'])
{
case 'Id':
        $apartments = $this->paginate(NULL, array('Apartment.id' => $this->data['Apartment']['query']));
        break;
case 'User':
    $apartments = $this->paginate(NULL, array("User.name Like '%".$this->data['Apartment']['query']."%'"));
    break
case 'time':
    $apartments = $this->paginate(NULL, array("Apartment.modified Like '%".$this->data['Apartment']['query']."%'"));
    break;
}
}
else {
        $apartments = $this->paginate();
}

person Andromeda    schedule 11.11.2009    source источник


Ответы (2)


Решил проблему. Получены подробности из AdvancedPagination

person Andromeda    schedule 11.11.2009

Образец вашего представления выглядел неполным, но сначала я хотел бы убедиться, что вы включаете в представление методы prev и next из PaginationHelper, чтобы убедиться, что критерии поиска распространяются.

<?php
    echo $paginator->prev('« Previous ', null, null, array('class' => 'disabled'));
    echo $paginator->next(' Next »', null, null, array('class' => 'disabled'));
?> 

Кроме того, я надеюсь, что вы заранее очищаете параметры поиска, которые вы передаете в paginator.

person andrewle    schedule 11.11.2009
comment
я уже добавил в него элемент разбивки на страницы. ‹?php echo $this-›element('pagination'); ?› - person Andromeda; 11.11.2009