Nic*_*ick 6 pagination cakephp
我看到这个PAGINATE不能在同一时间两列排序票仍然是开放的,这使我相信,我想要做的也不是没有可能解决方法.所以我想我正在寻找的是一种解决方法.
我正在尝试做许多留言板的工作:有一个" sticky"功能.我想这样做,以便无论用户点击哪个表头链接进行排序,我的模型的" sticky"字段始终是第一个排序的,然后是用户点击的任何列.我知道您可以设置$this->paginate['Model']['order']为您想要的任何内容,因此您可以将其设置为" sticky"字段,将用户选择的列放在第二位.这种方法的问题在于,在您执行此操作后,分页行为不正常.表头链接无法正常工作,切换页面也无法正常工作.还有其他一些解决方法吗?
Nic*_*ick 15
CakePHP IRC频道上的用户ten1帮我找到了解决方案.我告诉他,如果他在这里发布了答案,那么我会将其标记为正确答案,但他说我应该自己做,因为他还没有Stack Overflow帐户.
诀窍是使用模型的"beforeFind"回调方法将"粘性"字段注入查询的"顺序"设置,如下所示:
public function beforeFind($queryData) {
$sticky = array('Model.sticky' => 'DESC');
if (is_array($queryData['order'][0])) {
$queryData['order'][0] = $sticky + $queryData['order'][0];
}
else {
$queryData['order'][0] = $sticky;
}
return $queryData;
}
Run Code Online (Sandbox Code Playgroud)