phppaginationyii

How can I customize the labels for the pager in Yii?


I am new to Yii. I want to implement custom pagination. I want to change the appearance of the pager. How do I change the labels of the pager's links?

I want the links to appear like so:

<<  <  1  2  3  4  >  >>

instead of their default appearance, which is like this:

[first] [previous]  1  2  3  4  [next] [last]

I am using CListView to display the data, which I have set up like this:

$this->widget('zii.widgets.CListView', array(
            'dataProvider' => $categoryProjects,
            'itemView' => '_itemDetailsView',           
            'ajaxUpdate'=>false,
        ));

Can anyone please tell me how do I start with it? I've seen some posts but unable to get right information.

Thanks in advance.


Solution

  • You need to set the pager property of the CListView. By default, this is a CLinkPager; you don't need to change that (this component has your needs covered), but you need to configure it:

    $this->widget('zii.widgets.CListView', array(
                'dataProvider' => $categoryProjects,
                'itemView'     => '_itemDetailsView',
                'ajaxUpdate'   => false,
                'pager'        => array(
                                    'class'          => 'CLinkPager',
                                    'firstPageLabel' => '<<',
                                    'prevPageLabel'  => '<',
                                    'nextPageLabel'  => '>',
                                    'lastPageLabel'  => '>>',
                                  ),
            ));
    

    Update: If you want to "bake in" the above custom configuration to all list views in your application, you have to create a new CustomListView component deriving from CListView. So you need this class:

    Yii::import('zii.widgets.CListView');
    
    class CustomListView extends CListView {
        public function init() {
            parent::init();
    
            $this->pager = array( 
                                'class'          => 'CLinkPager', 
                                'firstPageLabel' => '<<', 
                                'prevPageLabel'  => '<', 
                                'nextPageLabel'  => '>', 
                                'lastPageLabel'  => '>>', 
                           );
        }
    }
    

    After including this, you can simply use CustomListView as your list widget instead of zii.widgets.CListView.