Facebook Twitter Google Maps RSS
Home webサイト CakePHPのページングの話
formats

CakePHPのページングの話

こんにちは。

ずっと案件でCakePHPをさわっていましたが、

「あ、これブログが私のターンになったら書こう!」と思っていたネタをことごとく忘れています。。。

が、必死こいて何とか思い出したので、CakePHPネタを書きます。

 

※バージョンはCakePHP2.4.5です。

個人的に非常に苦労したのが、ページング処理。

ページングというと「<<  <  1  2  3  4  5  >  >>」みたいな奴ですが、

デザインありきで実装してたので、思うようにデザインが当たらない当たらない…

数字部分にはデフォルトでspanタグが入るし、デフォルトでセパレータはあるし…

デフォルトで何でもあるって、嬉しいですね(涙目)

ドキュメントを読めって、それはそうですけどね、ページングのとこだけ英語じゃなくたっていいじゃない…

 

たとえば、ソース上はこんな感じのHTMLで出力させたいとき…

   <ul class=”navi”>

<li class=”number”>61-70 of 342 records</li>

<li class=”first link”><a href=”/” rel=”first”>« </a></li>
<li class=”prev link”><a href=”/?page=6″ rel=”prev”>‹ </a></li>

<li><a href=”/?page=5″>5</a></li>
<li><a href=”/?page=6″>6</a></li>
<li class=”on”>7</li>
<li><a href=”/?page=8″>8</a></li>
<li><a href=”/?page=9″>9</a></li>

<li class=”next link”><a href=”/?page=8″ rel=”next”> ›</a></li>
<li class=”last link”><a href=”/?page=35″ rel=”last”> »</a></li>

</ul>

画面上はこんな感じ(css 当たってます)↓

 

 

php上ではこんな感じ↓

<?php
$paging = ”;

$paging .= ‘<ul class=”navi”>’;

$paging .= ‘<li class=”number”>’ . $paginator->counter(‘{:start}-{:end} of {:count} records’) . ‘</li>’;

$paging .= $paginator->first(‘« ‘, array(‘tag’=>’li’, ‘class’ => ‘first link’));
$paging .= $paginator->prev(‘‹ ‘, array(‘tag’=>’li’, ‘class’ => ‘prev link’), null, array(‘tag’=>’li’, ‘class’ => ‘prev on’));

$paging .= $paginator->numbers(array(‘separator’ => ‘   ‘, ‘modulus’=>4, ‘tag’ => ‘li’, ‘currentClass’ => ‘on’));

$paging .= $paginator->next(‘ ›’, array(‘tag’=>’li’, ‘class’=>’next link’), null, array(‘tag’=>’li’, ‘class’=>’next on’));
$paging .= $paginator->last(‘ »’, array(‘tag’=>’li’, ‘class’ => ‘last link’));

$paging .= ‘</ul>’;

 $paginator->prevと$paginator->nextの引数(第2、第4)には、

それぞれリンクが活性の時(遷移先のページがある時)と非活性の時(遷移先のページがない時)のタグを設定できます。

・活性の時

‘<li class=”next link”><a href=”/?page=35″ rel=”next”>   ›</a></li>’

・非活性の時

‘<li class=”next on”>   ›</li>’

 

便利ですね!!!!

Tags:

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です


*