【发布时间】:2018-01-06 20:05:11
【问题描述】:
我没有成功使用带有自定义查询的分页。我完全按照文档中的内容进行操作,但它不起作用。关键是对记录列表进行分页,将标志“有效”设置为“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]];
并且该错误不再弹出。但不考虑“有效”=“Y”或“N”的条件过滤。所以还是不行。
【问题讨论】:
-
每当收到错误时,请务必发布complete错误,即包括full堆栈跟踪 (最好从日志中以正确可读的方式复制),即使问题对于熟悉 CakePHP 的人来说可能很明显!还要显示/描述相应的上下文,即显示/突出显示实际触发错误的代码,并请始终提及您的 exact CakePHP 版本 - 谢谢!通常,在收集这些信息时,问题甚至会自行解决。
-
不要这样做,使用适当的基于 PRG 模式的过滤方法,例如 search。这个插件开箱即用,只需不到 3 行就可以完成同样的事情,您可以稍后在顶部添加大量搜索过滤器。
标签: php cakephp pagination paginator