路由分页Cakephp 3

路由分页Cakephp 3,php,cakephp,pagination,routes,cakephp-3.0,Php,Cakephp,Pagination,Routes,Cakephp 3.0,我使用的是CakePHP3,我想对我的用户进行分页。 但是,当我单击第二个页面时,URL看起来像/users?page=2,我希望:/users/2 我在routes.php中创建了此路由: $routes->connect('/users/:page', ['controller' => 'users', 'action' => 'index'], ['page' => '[0-9]+']); 在Users/index.ctp中的“prev”按钮之前,我将: <

我使用的是CakePHP3,我想对我的用户进行分页。 但是,当我单击第二个页面时,URL看起来像
/users?page=2
,我希望:
/users/2

我在routes.php中创建了此路由:

$routes->connect('/users/:page', ['controller' => 'users', 'action' => 'index'], ['page' => '[0-9]+']);
在Users/index.ctp中的“prev”按钮之前,我将:

<?php
      $this->Paginator->options([
              'url' => [
              'controller' => 'users',
              'action' => 'index'
          ]
      ]);
 ?>
我是不是错过了什么,还是哪里出了错


感谢您的帮助。

PaginatorHelper已构建url格式,即使用?page=n。它还将进行排序,例如用户?page=2&sort=user\u id&direction=asc。您的/users/{page}格式无法处理排序

如果你真的想坚持使用/users/{page},你必须重写PaginatorHelper。

试试这个 在带有分页器组件的控制器一侧。它对我有用

$this->Paginator->paginate('Users')
对于自定义url
请在此处输入代码
你需要执行索引操作

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

您得到的错误与路由或帮助器的使用无关。请显示您的控制器代码,即问题所在的位置。我的用户控制器是使用cake bake命令生成的。所以我的索引方法是这样的:
$this->set('users',$this->paginate($this->users))$此->设置(''u serialize',['users'])
在调用paginate之前,是否可以执行
调试($this->Users)
?我认为在你的例子中,
$this->Users
false
或者是一个空数组。数组不是空的,我得到了这个对象:
对象(App\Model\Table\UsersTable){'registryAlias'=>'Users','Table'=>'Users','alias'=>'Users','entityClass'=>'App\Model\Entity\User','associations'=>[],'behaviors'=>[],'defaultConnection'=>'default','connectionName'=>'default'}
您在其他地方调用paginate吗?我不想处理用户排序,如果能看到您当前得到的错误的完整堆栈跟踪就好了。我将尝试重写PaginatorHelper,但我对Cakephp重写并不太熟悉。我会尽力去做的。谢谢
public function index($page = null){
$this->Paginator->settings = ['limit' => 15, 'page' => $page];
$this->set('users', $this->Paginator->paginate('Users'));
}