2017-10-20 34 views
0

工作使用CakePHP 3.5.3爲了不與sortWhitelist

嗨,

下面的代碼工作的作品,因爲它應該和由ASC DUE_DATE顯示結果集和單吧。

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.

+1

我猜sortWhitelist數組中的列名和order數組應該匹配,即''sortWhitelist'=> ['Activities.due_date'...' – arilia

+0

完美的作品。對於其他人的參考,我不得不將模型引用添加到分頁器排序鏈接,所以排序工作如下分頁:FROM Paginator-> sort(__('due_date'))?> TO Paginator-> sort('Activities。 due_date',__('Due Date'))?>感謝Arilia。 – Zenzs

回答

0

必須有sortWhitelist陣列,所述順序陣列和分頁程序鏈路

所以之間的一致性,如果你的字段是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作爲列名稱