不明点
ページネーションで、「次のページ」や「ページ番号」をクリックすると画像1のようなエラーページに飛んでしまう。
[画像1]
しかし、 一覧のヘッダの文字列をクリックして、「ページ番号」をクリックするときちんとページネーションの動きができます。
参考サイト_ソートの使い方(sort)を参照
ちなみに、成功時と失敗時のURLを見ると以下のような形でした
<成功> http://localhost:8000/bank/Ichiran/direction:desc/sort:account_number/page:2
<失敗> http://localhost:8000/bank/Ichiran/page:2/sort:Bank.account_number/direction:asc
コントローラ(PHP)での記述が悪いのか、ビュー側(HTML&PHP)の記述が悪いのかが分かりません。
解決したいこと
一覧のヘッダの文字列をクリックしなくてもページネーションを行いたい。
<Controller>
PHP
1class BankController extends AppController{ 2 Public $name = 'Bank';//コントローラーネーム 3 Public $uses = 'Bank'; 4 Public $layout; 5 public $paginate = array( 6 'page' => 1,//初期表示のページ 7 'conditions' => array(//取得条件 8 'delete_flag' => 0 //削除フラグが0のもののみ表示させる 9 ), 10 'fields' => array( //取得するフィールド名 11 'bank_code', 12 'bank_meisyou', 13 'account_number', 14 'torihikinin', 15 'version', 16 ), 17 'sort' => 'bank_code',//基本ソート条件 18 'limit' => 4,//1ページ毎に表示する行数 19 'direction' => 'asc'//並び順 20 ); 21public function Ichiran(){ 22 try 23 { 24 25 $data = $this->paginate('Bank'); /* ページネーションから一覧を取得 */ 26 if(!$data){ 27 throw new Exception('一覧に表示するデータがありません。'); 28 }else{ 29 30 $this->set('data',$data); 31 } 32 33 } catch(Exception $ex) { 34 $this->log($ex,'error'); 35 echo "error:".$ex->getMessage(); 36 } 37 } 38} 39
[View]
HTML
1<body> 2 3 <div class = "bys"> 4 5 6 <table class = "btable01"> 7 <tr> 8 <!-- ヘッダにPaginatorヘルパーから生成したリンクを配置する --> 9 <th> <?php echo $this->Paginator->sort('bank_code', '銀行コード'); //表示は「銀行コード」でbank_codeをソートさせる ?></th> 10 <th> <?php echo $this->Paginator->sort('bank_meisyou', '銀行名称'); ?></th> 11 <th> <?php echo $this->Paginator->sort('account_number', '口座番号'); ?></th> 12 <th> <?php echo $this->Paginator->sort('torihikinin', '取引人'); ?></th> 13 <th> 削除</th> 14 </tr> 15 <?php 16 17 foreach($data as $record){//配列+繰り返し文&$dataを$recordとして使用 18 19 echo '<tr>'; 20 //モデル名、大文字小文字の違いも認識する 21 echo "<td>{$record['Bank']['bank_code']}</td>"; 22 $cd = $record['Bank']['bank_code']; 23 echo "<td>{$record['Bank']['bank_name']}</td>"; 24 echo "<td>{$record['Bank']['account_meisyou']}</td>"; 25 26 echo "<td>{$record['Bank']['recipient']}</td>"; 27 echo "<td>"; 28 echo $this->Form->create('bank', array( 29 'type'=>'post', 30 'url'=>'/Bank/sakujyo', 31 'onsubmit'=>'return confirm("削除します。よろしいですか?");' 32 //confirmy⇒確認ダイアログを表示する 33 )); 34 echo $this->Form->hidden('bcode',array('value'=>$cd)); 35 echo $this->Form->hidden('ver',array('value'=>"{$record['Bank']['version']}")); 36 echo $this->Form->submit('削除',array('class'=>'sakujyo','name'=>'sakujyo')); 37 echo $this->Form->end(); 38 echo "</td>"; 39 echo '</tr>'; 40 } 41 42 ?> 43 44 45 </table>
開発環境:netbeans
フレームワーク:CakePHP2.x
実行環境:GoogleChrome
あなたの回答
tips
プレビュー