【问题标题】:Cake3 Paginator Sort ErrorCake3 分页器排序错误
【发布时间】:2017-07-05 14:04:57
【问题描述】:

我有一个非常简单的模型,我想对其进行分页。分页有效,但排序链接没有任何效果:

我的控制器:

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')

调用的url是:

properties/index/3?sort=id&direction=desc

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

【问题讨论】:

    标签: sorting cakephp-3.0 paginator


    【解决方案1】:

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

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

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

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

    【讨论】:

    • 是的,这是我添加到主查询的顺序/排序!今天学到了很好的一课!
    猜你喜欢
    • 2016-11-13
    • 2018-10-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-03-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多