Проблема нумерации страниц Cakephp со следующим / предыдущим - PullRequest
0 голосов
/ 03 февраля 2010

Допустим, у меня есть эта страница с нумерацией страниц:

локальный / фр / пользователей / индекс / страница: 1

Я вижу правильные результаты для страницы 1 в зависимости от того, как я определил переменную paginate в моем контроллере. Но когда я нажимаю следующую кнопку, URL меняется на страницу: 2, но результаты не меняются и совпадают со страницей: 1, то же самое для страницы: 3, страница: 4 и так далее ...

Если я сначала отсортирую столбец, скажем, имя пользователя, то я могу без проблем использовать предыдущую / следующую ссылку, данные меняются на каждой странице.

Единственное, о чем я могу думать, это может вызвать у меня проблемы, это то, что я использую параметр языка в своих URL, но я не знаю, как это исправить ...

Я сейчас использую Cake 1.2.5. Я также пытался с 1,3 бета с такими же результатами.

Хорошо, вот мой код контроллера пользователя:

var $paginate = array('limit'=>'5');
function index() {
$this->User->recursive = 0;
$this->set('users', $this->paginate());
}

Я использую учебник Teknoid для переключения языков:

Переключение языков на основе URL ...

параметр языка добавлен через app_helper.php

function url($url = null, $full = false) {
    if(!isset($url['language']) && isset($this->params['language'])) {
        $url['language'] = $this->params['language'];
     }     

     return parent::url($url, $full);
}

и переключение языков осуществляется с помощью метода в app_controller.php:

function _setLanguage() {

    if ($this->Cookie->read('lang') && !$this->Session->check('Config.language')) {
        $this->Session->write('Config.language', $this->Cookie->read('lang'));
    }
    else if (isset($this->params['language']) && ($this->params['language']
         !=  $this->Session->read('Config.language'))) {     

        $this->Session->write('Config.language', $this->params['language']);
        $this->Cookie->write('lang', $this->params['language'], null, '20 days');
    }
}

РЕШЕНИЕ:

После настройки сайта босса Yahoo и того, что подкачка страниц работала без сбоев, я более внимательно посмотрел на свой код и обнаружил, что проблема была в моем маршруте .php.

У меня было это:

Router::connect('/news', array('controller'=>'news', 'action'=>'index'));

Router::connect('/:language/news', array('controller'=>'news', 'action'=>'index'), array('language'=>'[a-z]{2}'));

Я изменил это так, чтобы принять все параметры:

Router::connect('/news/*', etc...

Router::connect('/:language/news/*', etc...

Ответы [ 2 ]

0 голосов
/ 20 сентября 2016
Even i faced the similar problem

**Solution**

I closely checked all my code and after trial and errors i was able to find the solution

First the cause: I was doing a order by 
$this->paginate = array(
            'limit' => 20,
            'order' => array('Test.aws_id' => 'asc'),
            'conditions' => $condition_options
        );

The above code was returning first page result across all pages.

After a while i closely checked everything and the result set.
The resultset was returning me **capital AWS_ID** and i was doing my ordering on aws_id after changing it to caps my code was working

Hope this helps someone
0 голосов
/ 04 февраля 2010

Покажите нам код контроллера, код представления и некоторые примеры URL. У меня были подобные проблемы в прошлом, но никто не может помочь, если вы не дадите нам больше информации.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...