路由分页Cakephp 3
我使用的是CakePHP3,我想对我的用户进行分页。 但是,当我单击第二个页面时,URL看起来像路由分页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”按钮之前,我将: <
/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'));
}