Cake3 Paginator Sort Error
У меня есть очень простая модель, которую я хочу разбить на страницы. Разбивка на страницы работает, но ссылки сортировки не имеют никакого эффекта:
Мой контроллер:
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 называется:
Свойства / индекс /3? сортировать = идентификатор и направление = убывание
Страница перезагружается, но порядок данных не меняется.
1 ответ
Белый список ожидает точное имя поля, которое вы используете в сортировке. Он не будет автоматически предшествовать имени первичной таблицы, поэтому ваш белый список должен выглядеть следующим образом:
public $paginate = [
'limit' => 10,
'order' => [
'Properties.id' => 'asc'
],
'sortWhitelist' => [
'id',
'name',
'active'
],
];
Он увидит "id" в запросе и проверит, что точное имя поля "id" существует в белом списке.
Кроме того, кажется, что вы включаете order()
по вашему запросу. Чтобы разрешить нумератору устанавливать порядок, вы должны удалить это предложение.