我有一个网页,在这个页面中,我需要为不同的2个表格共有2个分页。
我尝试过不同的分页,但它相互依赖。
例如,如果我选择第一张表的第二页,则第二张表会自动更改为第二页。
这是我的控制器代码:
$page = $this->pageForPagination('User');
$this->paginate = array(
'User' => array(
'fields' => array(
'User.*',
),
'conditions' => $userConditions,
'page' => $page,
),
);
$this->set('users', $this->paginate('User'));
$page1 = $this->pageForPagination('Game');
$this->paginate = array(
'Game' => array(
'fields' => array(
'Game.*',
),
'conditions' => $conditions,
'page' => $page1,
),
);
$this->set('games', $this->paginate('Game'));
以下是上述代码中使用的函数:
function pageForPagination($model) {
$page = 1;
$sameModel = isset($this->params['named']['model']) && $this->params['named']['model'] == $model;
$pageInUrl = isset($this->params['named']['page']);
if ($sameModel && $pageInUrl) {
$page = $this->params['named']['page'];
}
$this->passedArgs['page'] = $page;
return $page;
}
这是我的观看代码:
echo $this->element('paging', array('model' => 'User'));
echo $this->element('paging', array('model' => 'Game'));
我已经从这个网址引用了上述代码:http://debuggable.com/posts/how-to-have-multiple-paginated-widgets-on-the-same-page-with-cakephp:48ad241e-b018-4532-a748-0ec74834cda3
任何人都可以帮助我,因为我还没有得到任何解决方案吗?
答案 0 :(得分:0)
您提到的链接中的解决方案是覆盖默认的分页网址,并且不会同时显示这两个模型。您还没有完全实施解决方案。
您必须为每个模型手动提取页码,如下所示:
function pageForPagination($model) {
if (isset($this->params['named']['pagefor'.$model])
return $this->params['named']['pagefor'.$model];
else
return 1;
}
以下代码:
echo $this->element('paging', array('model' => 'User'));
echo $this->element('paging', array('model' => 'Game'));
导致cakephp使用默认的分页视图,默认分页中的URL对于两个模型都是相同的。您必须使用自定义分页视图并指定页面链接的模型。
对于上面编辑过的函数,您可以使用这样的url模式:
/Controller/Action/pageforUser:215/pageforGame:35
视图中的每个页面链接。
我认为使用此url模式的最佳做法是覆盖分页帮助程序,以便创建的链接形成以下模式:
'/Controller/Action/pagefor[Model]:215'.[other parameters]