Если я правильно понимаю ваш код, вы сможете заменить:
<?php
$urlParams = $this->params['url'];
unset($urlParams['url']);
$optionss=array('url' => array('?' => http_build_query($urlParams)));
//$this->Paginator->options($optionss);
$this->Paginator->settings['paramType'] = 'querystring';
?>
с
<?php $this->Paginator->options(array('url' => $this->passedArgs)); ?>
Поля формы в нумерации страниц
Если вы на самом деле пытаетесь поместить элементы формы в нумерацию страниц, вам нужно будет немного изменить свой код. Вам нужно будет создать именованные параметры для каждого элемента в параметрах поиска. Затем в действии контроллера вам нужно будет проверить версии запроса и данных, и параметры поиска [params], чтобы убедиться, что вы используете их в обоих случаях. Я также очистил бы код, чтобы он был немного более читабельным.
Во-первых, вам нужно использовать методы для получения данных. Он удостоверится, что он очищает запросы для вас и т. Д. Кроме того, вам нужно будет учитывать условия поиска и параметры фильтра, которые передаются как именованная переменная и отправляются в форме. Поэтому вам нужно обновить ваш контроллер следующим образом:
function search($options=null){
$this->set('results',""); // where is this used ??
$this->set('rs', 0);
$this->set('SearchTerm', '');
$this->set('FilterBy', '');
$this->set('options', array('full_name'=>'By Name','code'=>'By Code','phone'=>'By Phone','email'=>'By Mail'));
if ($SearchTerm = $this->request->data['Order']['SearchTerm']) or $SearchTerm = $this->params['named']['SearchTerm']) {
if ($FilterBy = $this->request->data['Order']['FilterBy'] or $FilterBy = $this->params['named']['FilterBy'])) {
$this->paginate = array(
'conditions' => array($FilterBy." LIKE " => "%".$SearchTerm."%"),
'limit' => 2,
'convertKeys' => array($FilterBy, $SearchTerm)
);
$this->set('rs', $this->paginate('Order'));
$this->set('SearchTerm', $SearchTerm);
$this->set('FilterBy', $FilterBy);
} else {
$this->Session->setFlash('Please enter something to search for');
}
} else {
$this->Session->setFlash('Please enter something to search for');
}
}
Далее мы сосредоточимся на представлении. Удалить переместить это:
$options=array('full_name'=>'By Name','code'=>'By Code','phone'=>'By Phone','email'=>'By Mail');
Это не должно быть в поле зрения. Он принадлежит контроллеру (который сейчас там).
Далее очистите форму:
<?php
echo $this->Form->create('Order', array('action' => 'search','type'=>'get'));
echo $this->Form->input('SearchTerm',array('label' => 'Find:'));
echo $this->Form->input('FilterBy', array('type'=>'select', 'label'=>'Search:', 'options'=>$options));
echo $this->Form->end('search');
?>
* Обратите внимание, что я изменил имя options
на FilterBy
, чтобы его было легче найти в контроллере. Также есть и другие вещи, которые можно убрать в поле зрения. Однако я остановлюсь только на том, что соответствует вопросу.
Теперь вам нужно заменить этот код:
<tr ><?php //echo $this->Paginator->numbers(array('first' => 'First page')); ?></tr>
<?php
$urlParams = $this->params['url'];
unset($urlParams['url']);
$optionss=array('url' => array('?' => http_build_query($urlParams)));
//$this->Paginator->options($optionss);
$this->Paginator->settings['paramType'] = 'querystring';
?>
<tr ><?php //echo" << ".$this->Paginator->counter(
// 'Page {:page} of {:pages}');
?></tr>
</table>
С этим кодом:
</table>
<p>
<?php
$this->Paginator->options(array('url' => array_merge(array('SearchString' => $SearchString, 'FilterBy' => $FilterBy), $this->passedArgs)));
echo $this->Paginator->counter(array(
'format' => __('Page %page% of %pages%, showing %current% records out of %count% total, starting on record %start%, ending on %end%')
));
?>
</p>
<div class="paging">
<?php echo $this->Paginator->prev('<< ' . __('previous'), array(), null, array('class'=>'disabled'));?>
| <?php echo $this->Paginator->numbers();?>
| <?php echo $this->Paginator->next(__('next') . ' >>', array(), null, array('class' => 'disabled'));?>
</div>
Вы форматируете это по-разному, конечно, чтобы соответствовать вашим потребностям. Но код должен работать, как и ожидалось, с поисковым термином и параметром фильтра, применяемым к нумерации страниц.
Удачи и счастливого кодирования!