【问题标题】:How to go to the last pagination page in CakePHP 3如何在 CakePHP 3 中转到最后一个分页页面
【发布时间】:2016-04-21 23:49:22
【问题描述】:

在 CakePHP 1.3 中,我可以通过添加参数page:last 转到最后一个分页页面。

我尝试在 CakePHP 3.0 中使用?page=last,但它不起作用。我怎样才能做到这一点?

【问题讨论】:

    标签: cakephp pagination cakephp-3.0


    【解决方案1】:

    您提到的功能已在 CakePHP 2.0 中删除。

    在 CakePHP 3.x 中,要从视图中创建链接,您可以调用

    $this->Paginator->last($last = 'last >>', $options =[])
    

    要从控制器中获取最后一页,您可以访问以下属性:

    $this->request->params['paging']['pageCount']
    

    编辑

    接受page:last 的一种可能的解决方法是在您的操作开始时添加以下内容:

    public function index() {
        // detect page:last
        if (!empty($this->request->params['named']['page'] && @$this->request->params['named']['page']=='last')) {
            $this->Paginator->paginate();
            $this->request->params['named']['page']=$this->request['paging'][$this->modelClass]['pageCount'];
        }
    
        //rest of code for action
    
        $this->set('results', $this->Paginator->paginate());
    }
    

    您必须致电$this->paginate() 两次,因此并不理想。


    另一种选择可能是扩展lib/Cake/Controller/Component/PaginatorComponent.php,使其支持page:last。有关详细信息,请参阅

    【讨论】:

    • 感谢您的回答。但是我怎样才能直接从其他控制器转到分页的最后一页呢?看来我必须通过分页转到控制器计算最后一页,然后重定向到最后一页上的同一控制器 - 这似乎不是一个优雅的解决方案。
    • 不太优雅,我同意。请参阅我答案的最后一部分。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-06-21
    • 1970-01-01
    • 2018-04-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多