0

我在网上商店工作。在类别视图中,我们使用 jquery 加载产品,因为用户能够过滤它们。这很好用。

然后我们尝试保存用户所在的页面(在分页中),这样如果他查看产品并返回类别视图,他就会从他之前所在的页面开始。例如,我在分页第 3 页,查看产品,点击浏览器后退按钮,然后在第 3 页而不是第 1 页继续(这是默认的 cakephp 行为)。我们将页码保存在会话中,就我们所见,它的效果很好。然后我们从会话中读取该页码并在我们的 $this->paginate 中使用它作为 'page' => $pagenumber。这也有效。

但是有一个奇怪的问题。当您从第 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 它可以工作。

我希望你有一个线索或以其他方式工作的解决方案......

4

1 回答 1

0

CakePHP 2.x PaginationRecall 组件可以很好地用于此目的。我在我的几个项目中使用它。

作者是 SO 成员Athanassios Bakalidis

于 2015-12-06T18:10:50.660 回答