Laravel4.1、Gumby用ペジネーション・プレゼンター
CSSフレームワークのGumby用のペジネーション・プレゼンターです。こんな感じです。

全体のカラーリングは手を入れていますので、オリジナルから変更されています。まあ、Gumbyはカスタマイズあってのフレームワークですからね。
クラスがオートロードできるように、適当な場所に設置、クラスの名前変更をしてください。
<?php
use Illuminate\Pagination\BootstrapPresenter;
/**
* Gumby presenter
*
* HTMLタグがハードコードされているプレゼンターメソッドを上書きする。
*/
class GumbyPresenter extends BootstrapPresenter
{
/**
* ペジネーションの数字部分生成
*
* @param int $start
* @param int $end
* @return string
*/
public function getPageRange( $start, $end )
{
$pages = array();
for( $page = $start; $page <= $end; $page++ )
{
if( $this->currentPage == $page )
{
$pages[] = '<li class="primary badge">'.$page.'</li>';
}
else
{
$pages[] = $this->getLink( $page );
}
}
return implode( '', $pages );
}
/**
* 前のページリンク生成
*
* @param string $text
* @return string
*/
public function getPrevious( $text = '«' )
{
if( $this->currentPage <= 1 )
{
return '<li class="default badge">'.$text.'</li>';
}
else
{
$url = $this->paginator->getUrl( $this->currentPage - 1 );
return '<li class="primary badge"><a href="'.$url.'">'.$text.'</a></li>';
}
}
/**
* 次のページリンク生成
*
* @param string $text
* @return string
*/
public function getNext( $text = '»' )
{
if( $this->currentPage >= $this->lastPage )
{
return '<li class="dafult badge">'.$text.'</li>';
}
else
{
$url = $this->paginator->getUrl( $this->currentPage + 1 );
return '<li class="primary badge"><a href="'.$url.'">'.$text.'</a></li>';
}
}
/**
* 省略の三連ドット生成
*
* @return string
*/
public function getDots()
{
return '<li class="badge">...</li>';
}
/**
* リンク要素の生成
* @param mixed $page
* @return string
*/
public function getLink( $page )
{
$url = $this->paginator->getUrl( $page );
return '<li class="light badge"><a href="'.$url.'">'.$page.'</a></li>';
}
}
これを利用する、ビューファイルです。
<?php $presenter = new GumbyPresenter( $paginator ); ?>
<?php if( $paginator->getLastPage() > 1 ): ?>
<div class="nine centered"> <!-- センタリング用 -->
<ul class="pagination">
<?php echo $presenter->render(); ?>
</ul>
</div>
<?php endif; ?>
プレゼンター中のli要素のbadge(バッチ)クラスは、display: inline-block;が指定されていますので、横に並べて表示できます。途中省略の3連ピリオドはバッチで囲んでいませんが、このクラスを付けることで、横一列に並べています。
ビューファイルのdiv要素は、センタリング用です。Gumbyは基本12カラムのグリッドシステムです。幅を指定している"nine"クラスは、適宜調整が必要です。このdivクラスを省けば、左寄せです。これを付けても、横幅の狭い画面では、左寄せになります。(一番小さいiPhoneサイズの場合は、2段に別れます。多分、回避策はプレゼンターとビューをもう一つ用意し、横幅が小さい画面では、別のペジネーションに切り替えることでしょう。)