对错误进行分页和排序?
Paginate and Sort bug(s)?
在我的控制器中,我将分页设置为按 2 个字段排序。
public $paginate = [
'limit' => 50,
'order' => ['first_name', 'last_name']
];
$contacts = $this->paginate($this->Contacts);
这在第一页上工作正常,但由于我遗漏了默认方向 => 'ASC'
分页器链接根本不起作用:
/contacts?page=2&sort=0&direction=first_name
当我在方向上添加时,它起作用了,但当然只按第一个字段排序,弄乱了排序顺序。
/contacts?page=2&sort=Contacts.first_name&direction=ASC
- 是否应该明确要求默认方向?
- 有没有一种方法可以在分页时维护两个字段以进行排序?
按虚拟字段排序(例如 full_name => first_name . ' ' . last_name
)无法像在 2.x
中那样工作
解决了以下两个问题:
将默认排序顺序设置为与虚拟字段相同:
public $paginate = [
'order' => ['first_name', 'last_name']
];
然后只需将以下内容添加到视图中,以防止分页器覆盖默认顺序,除非用户指定:
if (empty($_GET['direction'])) { $this->Paginator->options(['url' => ['direction' => null, 'sort' => null]]); }
在我的控制器中,我将分页设置为按 2 个字段排序。
public $paginate = [
'limit' => 50,
'order' => ['first_name', 'last_name']
];
$contacts = $this->paginate($this->Contacts);
这在第一页上工作正常,但由于我遗漏了默认方向 => 'ASC'
分页器链接根本不起作用:
/contacts?page=2&sort=0&direction=first_name
当我在方向上添加时,它起作用了,但当然只按第一个字段排序,弄乱了排序顺序。
/contacts?page=2&sort=Contacts.first_name&direction=ASC
- 是否应该明确要求默认方向?
- 有没有一种方法可以在分页时维护两个字段以进行排序?
按虚拟字段排序(例如 full_name => first_name . ' ' . last_name
)无法像在 2.x
解决了以下两个问题:
将默认排序顺序设置为与虚拟字段相同:
public $paginate = [
'order' => ['first_name', 'last_name']
];
然后只需将以下内容添加到视图中,以防止分页器覆盖默认顺序,除非用户指定:
if (empty($_GET['direction'])) { $this->Paginator->options(['url' => ['direction' => null, 'sort' => null]]); }