У меня проблема с разбиением на страницы на моей странице поиска. Когда пользователь ищет что-то, у меня есть 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.
создать массив параметров
$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'], '&'), '&')))));
Найди его здесь