Торт PHP-пагинатор не пропускает passargs
Я использую cakePHP и пытаюсь заставить компонент paginator передавать переменные get или passargs при переходе на разные страницы. У меня есть множество различных селекторов ввода поиска, которые "фильтруют" возвращаемые результаты. Это работает при первом просмотре, но в тот момент, когда я нажимаю на другую страницу, отображаются все результаты.
У меня есть следующие настройки для моего paginator:
// In my controller class:
public $paginate = array('maxLimit' => 10, 'paramType' => 'querystring');
// Within my action method:
$this->paginate = array('conditions' => array(...),
order => array('Model.field ASC'),
'limit' => 20
);
// Calling the paginator:
$results = $this->paginate('Model');
$this->set(compact('results'));
На мой взгляд, файл:
<div class="paging">
<?php
echo $this->Paginator->prev('< ' . __('previous'), array(), null, array('class' => 'prev disabled'));
echo $this->Paginator->numbers(array('separator' => ''));
echo $this->Paginator->next(__('next') . ' >', array(), null, array('class' => 'next disabled'));
?>
</div>
РЕДАКТИРОВАТЬ: Насколько я понимаю, лучше использовать passArgs, но я немного не уверен, как это сделать. Мой $this->passArgs не возвращает результатов, поэтому я создаю переданные параметры в моем примере контроллера. Я также изменил свою форму с Get to Post:
$this->passedArgs["searchfield"] = $_POST["value"];
Теперь он правильно передает passArgs в полосе разбивки на страницы, но я не уверен, как построить массив условий подкачки. В большинстве случаев пользователи не будут выбирать значения по умолчанию. Например, один из фильтров - это дата от и дата до, а затем поле ввода поиска, если я оставлю даты, они все равно будут создавать аргументы и не будут возвращать никаких результатов, поэтому по сути мой URL будет что-то вроде:
http://localhost/site/controller/action/page:3/datefrom:0/dateto:0/searchFor:survey
Любая помощь?
1 ответ
Вы можете пройти по всем параметрам в представлении с помощью:
$this->Paginator->options(array('url' => $this->passedArgs));
или назначьте параметры вручную:
$this->Paginator->options(array('url' => array("0", "1")));
перед повторением пагинатора
См. CakePHP Cookbook для дальнейших примеров.