• 締切済み

[CakePHP] Paginatorのリンクが変

CakePHPのPaginatorを使ったページリンクが正しく出力されません。 1ページ目は正しく出力できていますが、2ページ目などに移動した際にURLがおかしくなります。 現状 1ページ目 http://www.example.com/hoge/2 ↓ 2ページ目 http://www.example.com/hoge/2/page:3 理想 1ページ目 http://www.example.com/hoge/2 ↓ 2ページ目 http://www.example.com/hoge/3 また、パラメータがついた場合も 1ページ目 http://www.example.com/hoge/2?hoge=hoge ↓ 2ページ目 http://www.example.com/hoge/3?hoge=hoge となるようにしたいのですが、何を間違えているのでしょうか。 ちなみにソースは以下のようになってます。 View/Hoge.php echo $this->Paginator->prev('< 前へ', array(), null, array('class' => 'prev disabled')); echo $this->Paginator->numbers(array('separator' => '')); echo $this->Paginator->next('次へ >', array(), null, array('class' => 'next disabled')); Config/routes.php Router::connect(     '/hoge/:page',     array(         'action' => 'hoge',     ),     array(         'pass' => array(             'page',         )     ) );

みんなの回答

  • foreach
  • ベストアンサー率51% (43/84)
回答No.1

いやいや、おかしくないですw > 2ページ目 > http://www.example.com/hoge/2/page:3 page:3はCakePHPで言うnamedパラメータと呼ばれるものです。 コントローラで$this->request->params['named'] をダンプすると表示されます。 このnamedパラメータはCakePHPでは良く出てきます。 > 理想 確かにRouterを駆使したら出来るかもしれないけど、ページネーションはページ数だけ維持するとは限りません。 Bakeしたソースだと一覧(index)で表のタイトルをクリックしたらそのカラムで並べ替え(昇順/降順)が可能で、その並べ替えの状態を維持してページングを維持してますが、ソート対象のカラムや並び順もnamedパラメータに乗せてページ遷移してるから状態維持できるんですよ。 次のページに行ったらID順に戻ってたらページングにならんでしょ? Routerに小細工するとそういうケースが出てきて行き詰まる要因になります。 やるとしてももうちょっと熟練されてからが良いかと。 > また、パラメータがついた場合も ?パラメータのことをQueryStringと言いますが、これはコントローラ側で設定します。 やり方は参考URLを参照してみて下さい。 > パラメータをクエリストリングで指定できるような設定もあるようだ。下記のようにparamTypeにquerystringを設定すると、「?page=2」のような指定で遷移した。 の箇所

参考URL:
http://j-caw.co.jp/blog/?p=264

関連するQ&A