4

アクセス許可ページのページネーションが必要な ACL に Yii Rights モジュールを使用しています。

以下は私のコードです:

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);
    }

そして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',
    ));

同じ方法を使用して他のページのページネーションを既に実装していますが、ここでは権利モジュールが機能していません。エラーは表示されませんが、ページネーションのリンク/ボタンも表示されません。

4

1 に答える 1

2

1 つのページに複数のグリッドを実装するときに同じ問題が発生しました。解決策は、グリッド ajax 呼び出しの URL を確認し、更新前に URL を操作し、ajax 要求の前に正しい URL とパラメーターを設定することでした。

お気に入り:

$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',
  ),
));
于 2013-09-23T08:58:03.593 に答える