64日目:Pagerはカスタムヘルパーで

ヘルパーでやるのが正解だろうなぁと思って調べてみたら、既にやっている方がいました。ありがたく参考にさせていただきました。
http://rebecca.ac/milano/mt/archives/001799.html
Milano::Monolog: ページャーリファクタリングする
http://rebecca.ac/milano/mt/archives/001799.html

自分なりにちょっとだけ変更してあります。
/var/www/podtv/lib/helper/PagerHelper.php

<?php

function pager_navigation( $pager, $uri)
{

        $navigation = '';

        if ( $pager->haveToPaginate())
        {

                $uri .= (preg_match( '/\?/', $uri) ? '&' : '?');
                $uri .= 'page=';

                $navigation .= link_to( '', $uri .$pager->getFirstPage());
                $navigation .= " ";
                $navigation .= link_to( '<', $uri .$pager->getPreviousPage());
                $navigation .= " ";

                foreach ( $pager->getLinks() as $page)
                {
                        if ( $page == $pager->getPage())
                        {
                                $navigation .= '<b><font size="+2">' .$page .'</font></b>'
;
                        } else {
                                $navigation .= link_to( $page, $uri .$page);
                        }
                        if ( $page != $pager->getCurrentMaxLink())
                        {
                                $navigation .= ' - ';
                        } else {
                                $navigation .= ' ';
                        }
                }

                $navigation .= link_to( '>', $uri .$pager->getNextPage());
                $navigation .= " ";
                $navigation .= link_to( '', $uri .$pager->getLastPage());
                $navigation .= " ";
        }
        return $navigation;
}
?>

これの呼び出しは、
/var/www/podtv/apps/frontend/modules/channel/templates/listSuccess.php

<?php use_helper('Pager'); ?>
<?php echo pager_navigation( $pager, 'channel/list'); ?>

で、実行結果

http://podtvlabo.com/channel/list/page/2

fontタグとか使ってるのはまぁ目をつぶって、一応できました。

後は、filterがうまく動けば、必要なものは大体そろうのかな?