【发布时间】:2015-09-14 04:28:15
【问题描述】:
我正在使用 CakePHP 3,我想给我的用户分页。
但是,当我单击第二页时,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'
]
]);
?>
现在,例如,当我单击第 2 页时,/users/2 打开并且我收到了以下错误消息 (RuntimeException):
Unable to locate an object compatible with paginate.
我是否遗漏了什么或哪里出错了?
感谢您的帮助。
【问题讨论】:
-
您得到的错误与路由或助手的使用无关。请出示您的控制器代码,这就是问题所在
-
我的用户控制器是使用 cake bake 命令生成的。所以我的索引方法看起来像这样:
$this->set('users', $this->paginate($this->Users)); $this->set('_serialize', ['users']); -
你可以在调用分页之前做一个
debug($this->Users)吗?我认为在你的情况下$this->Users是false或出于某种原因是一个空数组。 -
数组不为空,我得到了这个对象:
object(App\Model\Table\UsersTable) { 'registryAlias' => 'Users', 'table' => 'users', 'alias' => 'Users', 'entityClass' => 'App\Model\Entity\User', 'associations' => [], 'behaviors' => [], 'defaultConnection' => 'default', 'connectionName' => 'default' } -
您是在其他地方调用 paginate 吗?很高兴看到您收到的错误的完整堆栈跟踪
标签: php cakephp pagination routes cakephp-3.0