如何在cakePHP 2 Paginator组件中获取未找到的异常

时间:2015-09-03 16:09:48

标签: php cakephp pagination cakephp-2.3

我使用Paginator组件,每当用户/机器人转到高页码时,他都会得到一个未找到的异常。 这可能没问题,但我想将301用户重定向回第一页。

现在我知道[cakePHP 2文档] [1]告诉我如何针对个别情况进行操作,但我想在不添加代码位的情况下为所有分页执行此操作。

我尝试在我的应用程序中构建自己的Paginator组件,核心组件为Parent,但由于我没有名称空间,我只需调用自己的Component并以循环结束

    <?php

    App::uses('PaginatorComponent', 'Vendor/Controller/Component');

    class PaginatorComponent extends PaginatorComponent {

        public function paginate($object = null, $scope = array(), $whitelist = array()) {
            try {
                PaginatorComponent::paginate($object, $scope, $whitelist);
            } catch (NotFoundException $e) {
                if ($this->request->query('page') <= 1) {
                    throw new NotFoundException();
                }
                $this->redirect($this->here);
            }
        }

    }

1 个答案:

答案 0 :(得分:1)

您无法调用您的组件PaginatorComponent,因为这已经存在!这条线应该立即敲响警钟: -

class PaginatorComponent extends PaginatorComponent {

而是将您的组件命名为CustomPaginatorComponent之类的不同内容: -

class CustomPaginatorComponent extends PaginatorComponent {

您还需要使用自定义parent::paginate()方法拨打paginate(),而不是PaginatorComponent::paginate()