我的搜索页面中的分页存在问题。
当用户搜索某些内容时,我会有domain.com/search/?s=keyword
这样的网址
但是paginator给了我domain.com/search/page:x
之类的链接,
所以在next和prev和numbers页面中,get参数丢失了。我需要配置paginator来获取domain.com/search/page:x/?s=keyword
之类的链接
但我不能这样做。
我需要知道如何配置
$paginator->options();
$paginator->next();
$paginator->prev();
$paginator->numbers();
获得所需的效果。 感谢名单。
答案 0 :(得分:20)
创建选项数组
$options = array(
'url'=> array(
'controller' => 'posts',
'action' => 'search',
'?' => 'keyword='.$keyword
)
);
将其设置为帮助
$paginator->options($options)
然后你可以在保留GET变量的同时使用paginator helper。
希望它有所帮助:)
使您可以更轻松地在视图或.ctp文件中添加$ paginator选项
$this->Paginator->options['url']['?'] = $this->params['ur];
然后输入你想要的值:)
答案 1 :(得分:4)
要将所有URL参数传递给paginator函数,请将以下内容添加到视图中: 纯文本视图
$paginator->options(array('url' => $this->passedArgs));
就是这样。 看到 http://book.cakephp.org/2.0/en/core-libraries/components/pagination.html
答案 2 :(得分:2)
我使用了Matyas解决方案,但对于$ keyword,我确实喜欢这个:
$queryString = explode('?', $_SERVER['REQUEST_URI']);
$options = array('url'=> array('controller' => 'post', 'action' => 'search', '?' => $queryString[1]));
答案 3 :(得分:2)
在视图中使用语句,以便在分页时传递参数
$paginator->options(array('url' => $this->passedArgs));
这是传递参数的最简单方法。
当时$this->passedArgs
无效的时间会在那里传递静态值并尝试使用该静态值。
$paginator->options(array('url' => array('a', 'b')));
答案 4 :(得分:1)
检查this comment。
我用它,它工作正常。
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 );?>
希望它有所帮助。
答案 5 :(得分:0)
基本上你可以这样做:
function list_results($keywords)
{
$data = $this->paginate('Posts', array('Post.title LIKE' => '%'.$keywords.'%'));
}
答案 6 :(得分:0)
我知道这已经老了,但找到了一个适合我的简单解决方案。在视图文件中添加以下内容 -
$paginator->options(array('url' => array_merge($this->passedArgs,
array('?' => ltrim(strstr($_SERVER['QUERY_STRING'], '&'), '&')))));
找到它here
答案 7 :(得分:0)
$this->Paginator->options['url']['?'] = ['key' => $this->params['url']['value']];