我有一个非常简单的模型,我想分页。分页有效,但排序链接没有任何影响:
我的控制器:
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个项目,并且指向页面/下一个/上一个工作的链接正常工作。当我点击排序链接时:
$this->Paginator->sort('id', 'ID')
调用的网址是:
属性/索引/排序3 = ID&安培;方向=降序
页面重新加载,但数据的顺序不会改变。
答案 0 :(得分:1)
白名单需要您在排序中使用的确切字段名称。它不会自动添加主表的名称,因此您的白名单应如下所示:
public $paginate = [
'limit' => 10,
'order' => [
'Properties.id' => 'asc'
],
'sortWhitelist' => [
'id',
'name',
'active'
],
];
它会在查询中看到“id”,并检查白名单中是否存在确切的字段名称“id”。
此外,您的查询似乎包含order()
。要允许分页器设置顺序,您应该删除此子句。