Arya
Arya

Reputation: 504

Pagination for a table in yii

I'm using Yii application. In that how to give pagination to a table contents( not using cgridview).

config/main.php

'params'=>array(
    'adminEmail'=>'[email protected]',
    'listPerPage'=> 10,//default pagination size
),

In Controller,

  public function actionOutbox() {
    $criteria = new CDbCriteria;
    $criteria->condition = 'from_userid = :id';
    $criteria->order = 'time DESC';
    $criteria->params = array (':id'=>Yii::app()->user->id);

    $item_count = Email::model()->count($criteria);
    $model      = Email::model()->findAll($criteria);

    $pages = new CPagination($item_count);
    $pages->setPageSize(Yii::app()->params['listPerPage']);
    $pages->applyLimit($criteria);

    $this->render('outbox', array(
        'model' => $model,
        'item_count'=>$item_count,
        'page_size'=>Yii::app()->params['listPerPage'],
        'items_count'=>$item_count,
        'pages'=>$pages,
    ));
}

In View,

 <table data-provides="rowlink" data-page-size="20" data-filter="#mailbox_search" class="table toggle-square default footable-loaded footable" id="mailbox_table">
                            <thead>
                                <tr>
                                    <th></th>
                                    <th data-hide="phone,tablet">To</th>
                                    <th>Subject</th>
                                    <th data-hide="phone" class="footable-last-column">Date</th>
                                </tr>
                            </thead>
                            <tbody>
                                <?php
                                foreach ($model as $item) {
                                    if ($item->email_status == 1)
                                        echo '<tr id="' . $item->emailid . '" class="unreaded rowlink" style="display: table-row;">';
                                    else
                                        echo '<tr id="' . $item->emailid . '" class="rowlink" style="display: table-row;">';
                                    echo '<td class="nolink footable-first-column">';
                                    echo '<span class="footable-toggle"></span>';

                                    echo '</span></td>';
                                    echo '<td>' . $item->touser->username . '</td>';
                                    echo '<td>' . $item->email_subject . '</td>';
                                    $originalDate = $item->time;
                                    $newDate = date("Y-M-d H:i:s", strtotime($originalDate));


                                    echo '<td class="footable-last-column">' . $newDate . '</td></tr>';
                                }
                                ?>
                            </tbody>
                        </table>
<?php
  $this->widget('CLinkPager', array(
        'currentPage' => $pages->getCurrentPage(),
        'itemCount' => $item_count,
        'pageSize'=> $page_size,
        'maxButtonCount' => 5,
        //'nextPageLabel' =>'My text >',
        'htmlOptions' => array('class'=>'pages'),
    ));
     ?>

By using this code current page size is not working. Full values from table are displayed. I changed page size from 10 to 2 also, but not working.

What am I doing wrong?

Please help me. Thanks in advance

Upvotes: 0

Views: 936

Answers (1)

Taron Saribekyan
Taron Saribekyan

Reputation: 1390

You use findAll without limit and want that yii understand about pagination?

Use CGridView widget instead it and set pagination in DataProvider (not create separate object of pagination: it not affort to result count).

And please read this topic.

Thanks.

Upvotes: 1

Related Questions