前提
使用環境
CakePHP : 2.10
PHP : 7.2
絞り込み用の検索フォームと、データの一覧表示を同じViewで実装しています(index.ctp)。
一覧表示するデータはController::indexでテスト用のモデル(Users)から取得しますが、条件に応じて2通りのデータとして取得しているので、 index.ctp 内でタブ切り替えで表示を変更させています。
この時、
- タブAに表示するUsersのデータ群を"Users_A"
- タブBに表示するUsersのデータ群を"Users_B"
というようにエイリアスで扱っています。
実現したいこと
View において、タブA / B に表示するページング用のリンクと総件数等の情報が、データ群A / B の件数と一致していることは確認済みですが、いざページング用のリンクをクリックすると、
- 生成されるURLが想定のものではない
- 2ページ目以降にアクセスできない
という状況です。
実際に発生しているエラーは以下の通りです。
Not Found Error: The requested address '/site_a/User/index/0/0/1?page=2' was not found on this server.
パラメータの渡し方や受け取り方等、ルーティング関連の実装に問題があるのだろうと思うのですが、原因を特定できず困っています。ご助力いただけると幸いです。
ソース
各種ソースは以下の通りです。
- index.ctp
ctp
1<!-- Pagination --> 2<?php $this->Paginator->options(['url' => ['controller' => 'User', 'action' => 'index', $type, $sex, $page]]); ?> 3<?php echo $this->Paginator->prev('< 前へ | ', ['model' => 'Users_A'], null, ['class' => 'prev disabled', 'model' => 'Users_A']); ?> 4<?php echo $this->Paginator->numbers(['separator' => ' | ', 'model' => 'Users_A']); ?> 5<?php echo $this->Paginator->next(' | 次へ >', ['model' => 'Users_A'], null, ['class' => 'next disabled', 'model' => 'Users_A']); ?> 6<?php echo $this->Paginator->counter(['format' => __(' 全 {:count} 件'), 'model' => 'Users_A']);?>
- UserController.php
php
1class UserController extends AppController { 2 public $uses = array('Users'); 3 public $components = array('Paginator'); 4 5 public function index($type = null, $sex = null, $page = 1) { 6 // ユーザ一覧取得 7 $userInfoA = $this->getUsersForTabA($type, $sex, $page); 8 $userInfoB = $this->getUsersForTabB($type, $sex, $page); 9 10 $this->set(compact( 11 'userInfoA', 12 'userInfoB', 13 'page', 14 'type', 15 'sex', 16 ) 17 ); 18 } 19}
- routes.php
php
1Router::connect('/Users/:type/:sex/:page', array('controller' => 'User', 'action' => 'index'));
以上です。ソース内の不要な箇所は適宜省略しております。
よろしくお願いします。
※足りない情報、不明な点等あればコメントいただけると幸いです。
あなたの回答
tips
プレビュー