2017-07-05 25 views
1

我有一个非常简单的模型,我想分页。分页工作,但是排序链接没有任何效果:Cake3 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

白名单期望您在排序中使用的确切字段名称。它不会自动地在前面加上主表的名称,所以你的白名单应该是这样的:

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

它会看到“ID”的查询和检查精确字段名称“ID”在白名单中存在。

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

+0

是的,这是我添加到主查询中的顺序/排序!今天学到的好教训! –