ページ付けのあるこのページがあるとしましょう:
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チュートリアルを使用しています:
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...