我有一个正确过滤的搜索页面,但是当它分页时,你会丢失数据,因为我正在发布它。所以我将其切换为GET,但我无法弄清楚如何添加我传回给paginator的http_build_query($ params)。
我已尝试在选项中的paginator url中设置查询参数,但没有运气,API没有提及添加查询参数。
如何设置搜索结果查询参数,以便不同的页面知道它们被过滤的内容?因此,对name = steve和company = SomeCompany的搜索将通过第2,3,4页进行维护,每次都有10个结果,并且不会重置以显示所有未过滤的100个结果。
控制器中的简单示例分页
$this->paginate = [
'limit' => 5,
'order' => [ 'CollectionAgencyAgent.id' => 'desc' ]
];
return $this->paginate( $this->CollectionAgencyAgent, $conditions );
使用分页查看
<ul class="pagination <?php echo $class ?>">
<?php
$this->Paginator->options( [
'url' => [
'controller' => ''
]
] );
?>
<?php echo $this->Paginator->prev( __( '« Previous' ), [
'escape' => false,
'tag' => 'li',
'class' => 'arrow',
'disabledTag' => 'a'
] ); ?>
<?php echo $this->Paginator->numbers( [
'separator' => '',
'tag' => 'li',
'currentTag' => 'a'
] ); ?>
<?php echo $this->Paginator->next( __( 'Next »' ), [
'escape' => false,
'tag' => 'li',
'class' => 'arrow',
'disabledTag' => 'a'
] ); ?>
</ul>
答案 0 :(得分:2)
分页器类automatically merges the current request parameters:
public function beforeRender($viewFile) {
$this->options['url'] = array_merge($this->request->params['pass'], $this->request->params['named']);
if (!empty($this->request->query)) {
$this->options['url']['?'] = $this->request->query;
}
parent::beforeRender($viewFile);
}
所以简短的回答是什么都不做,那就行了。
它不能与问题中的代码一起使用的原因是这个调用:
$this->Paginator->options( [
'url' => [
'controller' => ''
]
] );
这将消除Paginator的运行时url选项。因此,为了防止问题中出现问题 - 只需删除该调用(然后,可能会修复导致您添加它的路由问题=)。