Cake3 分页器排序错误
Cake3 Paginator Sort Error
我有一个非常简单的模型,我想对其进行分页。分页有效,但排序 links 没有任何效果:
我的控制器:
public $paginate = [
'limit' => 10,
'order' => [
'Properties.id' => 'asc'
],
'sortWhitelist' => [
'Properties.id',
'Properties.name',
'Properties.active'
],
];
我的查询:
$properties = $this->Properties->find('all')->where($options)->contain($contains)->order(['Properties.id']);
$this->set('properties', $this->paginate($properties));
我的视图每页显示 10 个项目,link 到 pages/next/previous 工作正常。当我点击排序 link:
$this->Paginator->sort('id', 'ID')
调用的url是:
properties/index/3?sort=id&direction=desc
页面重新加载,但数据的顺序没有改变。
白名单需要您在排序中使用的确切字段名称。它不会自动添加主要 table 的名称,因此您的白名单应如下所示:
public $paginate = [
'limit' => 10,
'order' => [
'Properties.id' => 'asc'
],
'sortWhitelist' => [
'id',
'name',
'active'
],
];
它将在查询中看到 "id" 并检查白名单中是否存在确切的字段名称 "id"。
此外,您似乎在查询中包含了 order()
。要允许分页器设置顺序,您应该删除此子句。
我有一个非常简单的模型,我想对其进行分页。分页有效,但排序 links 没有任何效果:
我的控制器:
public $paginate = [
'limit' => 10,
'order' => [
'Properties.id' => 'asc'
],
'sortWhitelist' => [
'Properties.id',
'Properties.name',
'Properties.active'
],
];
我的查询:
$properties = $this->Properties->find('all')->where($options)->contain($contains)->order(['Properties.id']);
$this->set('properties', $this->paginate($properties));
我的视图每页显示 10 个项目,link 到 pages/next/previous 工作正常。当我点击排序 link:
$this->Paginator->sort('id', 'ID')
调用的url是:
properties/index/3?sort=id&direction=desc
页面重新加载,但数据的顺序没有改变。
白名单需要您在排序中使用的确切字段名称。它不会自动添加主要 table 的名称,因此您的白名单应如下所示:
public $paginate = [
'limit' => 10,
'order' => [
'Properties.id' => 'asc'
],
'sortWhitelist' => [
'id',
'name',
'active'
],
];
它将在查询中看到 "id" 并检查白名单中是否存在确切的字段名称 "id"。
此外,您似乎在查询中包含了 order()
。要允许分页器设置顺序,您应该删除此子句。