Cake3 Paginator排序错误

时间:2017-07-05 14:04:58

标签: sorting cakephp-3.0 paginator

我有一个非常简单的模型,我想分页。分页有效,但排序链接没有任何影响:

我的控制器:

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&安培;方向=降序

页面重新加载,但数据的顺序不会改变。

1 个答案:

答案 0 :(得分:1)

白名单需要您在排序中使用的确切字段名称。它不会自动添加主表的名称,因此您的白名单应如下所示:

public $paginate = [
    'limit' => 10,
    'order' => [
        'Properties.id' => 'asc'
    ],
    'sortWhitelist' => [
        'id',
        'name',
        'active'
    ],
];

它会在查询中看到“id”,并检查白名单中是否存在确切的字段名称“id”。

此外,您的查询似乎包含order()。要允许分页器设置顺序,您应该删除此子句。