CakePHP分页和获取参数

时间:2010-02-24 11:26:51

标签: php cakephp

我的搜索页面中的分页存在问题。 当用户搜索某些内容时,我会有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();

获得所需的效果。 感谢名单。

8 个答案:

答案 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

我用它,它工作正常。

在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();
}
视图文件中的

  <?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']];