Как получить не найденное исключение в компоненте cakePHP 2 Paginator

1

Я использую компонент Paginator и всякий раз, когда пользователь/бот переходит на номер страницы, который является высоким, он получит исключение Not Found. Это может быть хорошо, но я хотел бы перенаправить пользователя с 301 обратно на первую страницу.

Теперь я знаю, что [документация cakePHP 2] [1] рассказывает мне, как это сделать для отдельных случаев, но я хочу сделать это для всех разбиений на страницы без добавления кода каждый раз.

Я попытался создать свой собственный компонент Paginator в своем приложении с основным компонентом как родителем, но поскольку у меня нет пространств имен, я просто вызываю свой собственный компонент и кончаю в цикле

    <?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);
            }
        }

    }
Теги:
cakephp
pagination
cakephp-2.3

1 ответ

1

Вы не можете назвать свой компонент PaginatorComponent поскольку он уже существует! Эта линия должна сразу же звонить тревожным звонкам: -

class PaginatorComponent extends PaginatorComponent {

Вместо этого назовите свой компонент чем-то другим, например CustomPaginatorComponent: -

class CustomPaginatorComponent extends PaginatorComponent {

Вы также захотите вызвать parent::paginate() в свой собственный метод PaginatorComponent::paginate() paginate() а не PaginatorComponent::paginate().

Ещё вопросы

Сообщество Overcoder
Наверх
Меню