简体   繁体   中英

Pagination not working in Yii Framework

I am using Yii Rights modules for ACL where I want pagination for Permissions page.

Following is my code:

In AuthItemController.php

public function actionPermissions() {
        $dataProvider = new RPermissionDataProvider('permissions', array(
                    'pagination' => array(
                        'pageSize' => 10,
                        //'class' => 'CPagination', //showing an error
                        'itemCount' => 32
                        )));

        // Get the roles from the data provider
        $roles = $dataProvider->getRoles();
        $roleColumnWidth = $roles !== array() ? 75 / count($roles) : 0;

        // Initialize the columns
        $columns = array(
            array(
                'name' => 'description',
                'header' => Rights::t('core', 'Item'),
                'type' => 'raw',
                'htmlOptions' => array(
                    'class' => 'permission-column',
                    'style' => 'width:25%',
                ),
            ),
        );

        // Add a column for each role
        foreach ($roles as $roleName => $role) {
            $columns[] = array(
                'name' => strtolower($roleName),
                'header' => $role->getNameText(),
                'type' => 'raw',
                'htmlOptions' => array(
                    'class' => 'role-column',
                    'style' => 'width:' . $roleColumnWidth . '%',
                ),
            );
        }

        $view = 'permissions';
        $params = array(
            'dataProvider' => $dataProvider,
            'columns' => $columns,
        );

        // Render the view
        isset($_POST['ajax']) === true ? $this->renderPartial($view, $params) : $this->render($view, $params);
    }

And in View

$this->widget('bootstrap.widgets.TbGridView', array(
        'type' => 'bordered',
        'dataProvider' => $dataProvider,
        'template' => '{pager}{items}',
        'emptyText' => Rights::t('core', 'No authorization items found.'),
        'htmlOptions' => array('class' => 'grid-view permission-table'),
        'columns' => $columns,
        'pager' => array(
            'header' => '',
            'hiddenPageCssClass' => 'disabled',
            'maxButtonCount' => 3,
            'cssFile' => false,
            'class' => 'CLinkPager',
            'prevPageLabel' => '<i class="icon-chevron-left"></i>',
            'nextPageLabel' => '<i class="icon-chevron-right"></i>',
            'firstPageLabel' => 'First',
            'lastPageLabel' => 'Last',
        ),
        'pagerCssClass' => 'pagination',
    ));

I have already implemented pagination for other pages by using same method but here in rights module its not working. Its not showing any error but also not displaying pagination links/buttons.

I had the same problem when implementing multiple grids in one page, the solution that worked for me was , I checked the url the grid ajax call,and before update I manipulated the url, and set the correct url and parameters before ajax request!

like:

$this->widget('zii.grid.GridView', array(
  'id' => 'group-grid-customers-list-not-scheduled',
  'dataProvider' => $notScheduledVisitedDataProvider ,
  'beforeAjaxUpdate' => '
        function(id , options)
        { 
            options.url = options.url.split("&test=test&");
            options.url = options.url[0] + "&test=test&" + $(".search-form form").serialize(); 
        }',
  'columns' => array(
      'col1',
      'col2',
      'col3',
  ),
));

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM