2012-05-02 4 views
2

Я использую cakePHP, и я пытаюсь получить компонент paginator для передачи переменных get или passargs при переходе на разные страницы. У меня есть множество различных селекторов входных данных, которые «фильтруют» возвращаемые результаты. Это работает при первом просмотре, но в тот момент, когда я нажимаю на другую страницу, он показывает все результаты.cakePHP paginator не проходит passargs

У меня есть следующие настройки для моей постраничной навигации:

// 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> 

EDIT: Из моего понимания, что лучше использовать passedArgs, но я немного не уверен, как это сделать. My $ this-> passArgs не возвращает результатов, поэтому я создаю переданные параметры в моем примере с контроллером. Я также изменил свою форму от Добраться до сообщения:

$this->passedArgs["searchfield"] = $_POST["value"]; 

Он проходит passedArgs теперь правильно в постраничной полосе, но я не уверен, о том, как построить массив условий подкачки в настоящее время. В большинстве случаев пользователи не будут выбирать пример значений по умолчанию, один из фильтров - дата и дата, а затем поле ввода поиска, если я оставлю даты, он все равно создаст argumens и не вернет никаких результатов, поэтому по существу мой url будет выглядеть примерно так:

http://localhost/site/controller/action/page:3/datefrom:0/dateto:0/searchFor:survey 

Любая помощь?

ответ

2

Вы можете пройти по всем параметрам в окне с:

$this->Paginator->options(array('url' => $this->passedArgs)); 

или назначить Params вручную:

$this->Paginator->options(array('url' => array("0", "1"))); 

Befor вторя Paginator

ВИДЕТЬ CakePHP Cookbook для дальнейших примеров

+0

Привет @ Nebel54, спасибо за ваше предложение. Я думаю, что я нашел проблему, и это то, что моя форма фильтра или форма поиска отправляют только значения GET, поэтому мои $ this-> passArgs пустые. Можете ли вы указать, как я создал passArgs? – mauzilla

+0

Можете ли вы опубликовать, как выглядят ваши параметры? они построены как/param1: true/param2: name или like /? param1 = true & param2 = name – Nebel54

+0

it/param1: value/param2: value, но теперь, поскольку не все параметры всегда будут иметь значения, он будет делать param1: 0/param2: возможное значение /, которое сломает запрос – mauzilla