2015-06-27 60 views
3

我正在使用CakePHP 3,我想分頁我的用戶。 但是,當我點擊第二頁時,該URL看起來像/users?page=2,我預計:/users/2路線分頁CakePHP 3

我創建了這個routes.php文件路徑:在 「上一頁」 按鈕,我把之前

$routes->connect('/users/:page', ['controller' => 'users', 'action' => 'index'], ['page' => '[0-9]+']); 

而且在用戶/ index.ctp:

<?php 
     $this->Paginator->options([ 
       'url' => [ 
       'controller' => 'users', 
       'action' => 'index' 
      ] 
     ]); 
?> 

現在,當我點擊第2頁例如,/users/2打開,我得到這個錯誤消息(RuntimeException的):

Unable to locate an object compatible with paginate. 

我錯過如此mething或我犯了一個錯誤?

感謝您的幫助。

+0

錯誤你越來越有無關路線或助手的使用。請顯示您的控制器代碼,這是問題所在的地方 –

+0

我的用戶控制器是使用Cake Bake命令生成的。所以我的索引方法如下所示:'$ this-> set('users',$ this-> paginate($ this-> Users)); $ this-> set('_ serialize',['users']);' – Geetix

+0

可以在調用paginate之前執行'debug($ this-> Users)'嗎?我認爲在你的情況下'$ this-> Users'由於某種原因是'false'或者是一個空的數組。 –

回答

0

PaginatorHelper內置了url格式,即使用?page = n。它也會做排序,比如用戶?sort = user_id & direction = asc。您的/ users/{page}格式不處理排序。

如果您真的想堅持/ users/{page},您必須重寫PaginatorHelper。

+0

目前我不想處理用戶排序。 我會看到重寫PaginatorHelper,但在Cakephp重寫中我不太舒服。我會盡力去做。謝謝 – Geetix

0

嘗試此 在您的控制器與paginator組件。它爲我

$this->Paginator->paginate('Users') 

自定義URL enter code here u需要實現指數行動

public function index($page = null){ 
$this->Paginator->settings = ['limit' => 15, 'page' => $page]; 
$this->set('users', $this->Paginator->paginate('Users')); 
}