2009-11-11 3 views
1

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

Вот мой код.

Просмотр страницы 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(); 
} 

ответ

0

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

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

Кроме того, я надеюсь, что вы дезинфицируете параметры поиска, которые вы передаете в папку где-то перед рукой.

+0

Я уже добавил элемент разбиения на страницы. element ('pagination'); ?> – Andromeda