Cогласование страницы и параметры получения

У меня проблема с разбиением на страницы на моей странице поиска. Когда пользователь ищет что-то, у меня есть URL-адрес, например domain.com/search/?s=keyword, но paginator дает мне такие ссылки, как domain.com/search/page:x , поэтому на следующей и предыдущей и номерах страницы параметр get теряется , Мне нужно настроить paginator для получения ссылок, таких как domain.com/search/page:x/?s=keyword Но я не могу этого сделать.

Мне нужно знать, как настроить

 $paginator->options(); $paginator->next(); $paginator->prev(); $paginator->numbers(); 

чтобы получить необходимый эффект. Thanx.

Solutions Collecting From Web of "Cогласование страницы и параметры получения"

создать массив параметров

 $options = array( 'url'=> array( 'controller' => 'posts', 'action' => 'search', '?' => 'keyword='.$keyword ) ); 

установить его помощнику

 $paginator->options($options) 

а затем вы можете использовать помощник paginator, сохраняя переменные GET.

надеюсь, что это помогло 🙂

чтобы было проще, вы можете использовать параметры paginator $ pty в вашем представлении или файл .ctp

 $this->Paginator->options['url']['?'] = $this->params['ur]; 

затем поставьте нужное значение 🙂

Чтобы передать все аргументы URL в функции paginator, добавьте следующее к вашему представлению: Обычный текстовый вид

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

Вот и все. См. http://book.cakephp.org/2.0/ru/core-libraries/components/pagination.html.

Я использовал решение Matyas, но для ключевого слова $ мне это понравилось:

 $queryString = explode('?', $_SERVER['REQUEST_URI']); $options = array('url'=> array('controller' => 'post', 'action' => 'search', '?' => $queryString[1])); 

используйте инструкцию в своем представлении для параметров прохода во время разбивки на страницы

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

это самый простой способ передать параметры.

Некоторое время $this->passedArgs не работающее в это время, пропускает статическое значение там и пытается с этим статическим значением.

 $paginator->options(array('url' => array('a', 'b'))); 

Проверьте этот комментарий .

Я использовал его, он отлично работает.

в файле app_controller:

 function _paginatorURL() { $passed = ""; $retain = $this->params['url']; unset($retain['url']); $this->set('paginatorURL',array($passed, '?' => http_build_query($retain))); } function beforeFilter() { $this->_paginatorURL(); } с function _paginatorURL() { $passed = ""; $retain = $this->params['url']; unset($retain['url']); $this->set('paginatorURL',array($passed, '?' => http_build_query($retain))); } function beforeFilter() { $this->_paginatorURL(); } 

в файле представлений:

  <?php $paginator->options = array( 'url' => $paginatorURL );?> 

Надеюсь, поможет.

В основном вы можете сделать это следующим образом:

 function list_results($keywords) { $data = $this->paginate('Posts', array('Post.title LIKE' => '%'.$keywords.'%')); } 

Я знаю, что это старо, но найдено простое решение, которое работает для меня. Добавьте следующий в файл вида –

 $paginator->options(array('url' => array_merge($this->passedArgs, array('?' => ltrim(strstr($_SERVER['QUERY_STRING'], '&'), '&'))))); 

Найди его здесь