订单不适用于 sortWhitelist

order not working with sortWhitelist

使用 CakePHP 3.5.3

嗨,

下面的代码可以正常工作并显示结果集并按 due_date asc 排序。

public $paginate = [        
    'limit' => 5,
    'order' => [
        'Activities.due_date' => 'asc'
    ]
];   

public function index()
{        
    $session = $this->request->session();

    // Declare client id 1
    $cidOne = null;
    $cidOne = $session->read('Cid.one');

    // NOTE* DON'T USE ORDER HERE BECAUSE THE SORTS WILL NOT WORK
    $query = $this->Activities->find('all')
    ->where(['cid_1' => $cidOne])
    ->andWhere(['status' => 1]);

    // Send the query to the view.
    $this->set('activities', $this->paginate($query));
}

但是当我如下添加 sortWhitelist 时,初始页面加载未按 due_date 排序并且不显示排序箭头。

public $paginate = [
    'sortWhitelist' => [
       'due_date', 'related_to', 'subject', 'post_code', 'type', 'priority'
    ],
    'limit' => 5,
    'order' => [
        'Activities.due_date' => 'asc'
    ]
];

感谢您的帮助。 Z.

sortWhitelist数组、order数组和paginator之间必须保持一致link

因此,如果您的字段是 Activities.due_date,您的代码将变为:

public $paginate = [
    'sortWhitelist' => [
       'Activities.due_date', 'related_to', 'subject', 'post_code', 'type', 'priority'
    ],
    'limit' => 5,
    'order' => [
        'Activities.due_date' => 'asc'
    ]
];

在你看来

<?= $this->Paginator->sort('Activities.due_date', __('Due Date')) ?>

如果字段名称没有歧义,您可以省略模型名称并简单地使用 due_date 作为列名称