版本:3.3 *cakephp3-表格排序工作不
我使用$ paginator-> sort()方法創建的列標題在我的CMS分頁搜索結果表的鏈接。您應該可以單擊一次以升序排序,然後再次單擊以降序排列。但相反,我從來沒有工作。
但這並非適用於所有領域。假設我有5個領域。
<tr class="design">
<th scope="col"><?= $this->Paginator->sort('Students.id','Id',array('class'=>'link')); ?></th>
<th scope="col"><?php echo $this->Paginator->sort('Students.userName','Name',array('class'=>'link')); ?></th>
<th scope="col"><?php echo $this->Paginator->sort('Students.age','Age',array('class'=>'link')); ?></th>
<th scope="col"><?php echo $this->Paginator->sort('Students.currentClass','Class',array('class'=>'link')); ?></th>
<th scope="col"><?php echo $this->Paginator->sort('Students.dateJoined','Joined Date',array('class'=>'link')); ?></th>
</tr>
我可以使用username
,age
和school
但不使用id
和joined
排序表兩種方式。當我最初獲取列表時,我已經在我的模型函數中指定按照id
和joined
的升序獲取結果。 是因爲這個原因,我無法按降序排序嗎?
有什麼辦法可以實現這個目標嗎?
控制器功能
public function index()
{
//Listing Students
$this->paginate = [
'finder' => 'ListStudents',
'sortWhitelist' => ['Students.id',
'Students.userName',
'Students.age',
'Students.currentClass',
'Students.dateJoined',],
'limit' => 25,
];
$students = $this->paginate($this->Students);
$this->set(compact('students'));
$this->set('_serialize', ['students']);
}
型號功能
public function findListStudents(Query $query, array $options)
{
$query
->select(['id','userName','age','currentClass','dateJoined'
])
$query->group('Students.id');
$query->order(['status' => 'asc']);
$query->order(['Students.dateJoined' => 'asc']);
$query->order(['Students.id' => 'asc']);
return $query;
}
在此link提到的問題是一個類似於我facing.I試圖在裏面提到的解決方案,但它不工作。
你問是否在您的自定義查找指定的排序順序可能是問題。看起來這對你自己來測試會是一件非常微不足道的事情? –