CakePHP 2.x Paginaton:记住你是哪一页

时间:2014-02-17 14:59:05

标签: cakephp pagination cakephp-2.0 paginator

我在网上商店工作。在类别视图中,我们使用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它有效。

我希望你有一个线索或解决方案以另一种方式运作......

1 个答案:

答案 0 :(得分:0)

CakePHP 2.x PaginationRecall Component非常适用于此目的。我在几个项目中使用它。

作者是SO成员Athanassios Bakalidis