[英]CakePHP 3: How to use custom pagination?
我无法通过自定义查询使用分页。 我完全按照文档中的内容进行操作,但是不起作用。 关键是要对记录列表进行分页,将标志“有效”标记为“ Y”或“ N”。
在控制器中:
if (!isset($this->request->query['valid']) || $this->request->query['valid'] == '')
$allFilters['valid'] = 'N';
else
$allFilters['valid'] = 'Y';
$this->paginate = ['finder' => ['curnames' => $allFilters]];
$data = $this->paginate($this->Names)->toArray();
在模型中:
public $paginate = ['finder' => 'curnames', 'limit' => 25, 'order' => ['Names.id' => 'asc']];
public function findCurnames(Query $query, array $options) {
$query->where([
'valid' => $option['valid']
]);
return $query;
}
当我执行代码时,我得到一个Cake\\Network\\Exception\\NotFoundException
异常。 我缺少什么?
更新:版本是3.3。 执行以下操作时将触发错误:
$data = $this->paginate($this->Names)->toArray();
更新:在控制器中,我更改了该行
$this->paginate = ['finder' => ['curnames' => $allFilters]];
至
$paginate = ['finder' => ['curnames' => $allFilters]];
并且错误不再弹出。 但是不会考虑对'valid'='Y'或'N'进行条件过滤。 因此它仍然不起作用。
我得到了答案。 错误来自拼写错误。 正确的代码应该是
'valid' => $options['valid']
带“ s”的选项。 现在可以了。
这样做(没有任何自定义查找器方法)是否更容易:
if ($this->request->getQuery('valid', '') == '')
$valid = 'N';
else
$valid = 'Y';
$this->paginate = [
'limit' => 25,
'order' => ['Names.id' => 'asc']
];
$query = $this->Names->find('all')
->where([
'valid' => $valid
]);
$data = $this->paginate($query)->toArray();
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.