我在网上商店工作。在类别视图中,我们使用jquery加载产品,因为用户可以过滤它们。这非常有效。
然后我们尝试保存用户所在的页面(在分页中),这样如果他查看产品并返回到类别视图,他就会从他之前所在的页面开始。例如,我正在分页第3页,查看产品,点击浏览器后退按钮,然后继续第3页而不是1(这是默认的cakephp行为)。我们将页码保存在会话中,据我们所见,该会话效果很好。然后我们从会话中读取该页面编号,并在我们的$ this-> paginate中使用它作为'page'=> $页面编号。这也有效。
但有一个奇怪的问题。从第2页或第3页开始(读取:任何大于1的页面,但此刻我们只有3页),您无法返回到第1页。切换到第2页或第3页非常有用,但您可以切换到第1页。如果你点击它没有任何反应,它确实在chrome元素检查器中发送了一个网络请求,所以有些东西在后台徘徊。如果我们手动将页面设置为'page'=> 1.它可以工作,你可以切换到所有3页。
我希望你理解我的问题,我尽力解释它。 (对不起,如果我的英语不太好,我尽我所能尽力)。
我的代码(我尽可能缩短没有字段加入): 在控制器中
$page_number = $this->Session->read('Pagination.currentpage');
$this->paginate = array(
'conditions' => array(
'Product.status' => 'active',
'Product.visibility' => 1,
'Product.hidden_on_site' => 0,
),
'order' => 'Product.name ASC',
'limit' => 20,
'recursive' => 2,
'page' => $page_number,
);
$ page_number有效,它会输出正确的页面。但它给出的问题是,如果您在第2页或第3页,则无法获得第1页。如果我们手动设置'page'=> 1它有效。
我希望你有一个线索或解决方案以另一种方式运作......
答案 0 :(得分:0)
CakePHP 2.x PaginationRecall Component非常适用于此目的。我在几个项目中使用它。
作者是SO成员Athanassios Bakalidis。