Торт 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 для дальнейших примеров.

Другие вопросы по тегам