0

ページ付けのあるこのページがあるとしましょう:

localhost / fr / users / index / page:1

コントローラでpaginatevarを定義した方法に基づいて、1ページ目の正しい結果が表示されます。しかし、次のボタンをクリックすると、URLはpage:2に変わりますが、結果は変わらず、page:1と同じで、page:3、page:4なども同じです...

最初に列、たとえばユーザー名を並べ替えると、前/次のリンクを問題なく使用できます。データは各ページで変更されます。

私が問題を引き起こす可能性があると考えることができる唯一のことは、URLで言語パラメータを使用していることですが、これを修正する方法がわかりません...

現在、Cake1.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のボスサイトを設定し、ページングが問題なく機能していることに気付いた後、コードを詳しく調べたところ、routes.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...
4

2 に答える 2

0
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
于 2016-09-20T11:46:25.803 に答える