2013-08-28 3 views
3

Я использую модули Yii Rights для ACL, где я хочу разбиение страницы на страницу разрешений.Pagination не работает в Yii Framework

Ниже мой код:

В 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', 
    )); 

Я уже реализовали пагинации для других страниц, используя тот же метод, но здесь, в модуле прав его не работает. Он не показывает никаких ошибок, но также не отображает ссылки/кнопки разбивки на страницы.

+0

Я не знаю 'RPermissionDataProvider', но может быть атрибутом' totalItemCount' поставщика данных не хватает? Например, если он расширяет 'CSqlDataProvider', это будет необходимо. From yii doc => Примечание. Если вы хотите использовать функцию разбиения на страницы, вы должны настроить свойство totalItemCount как общее количество строк (без разбивки на страницы). И если вы хотите использовать функцию сортировки, вы должны настроить свойство сортировки, чтобы провайдер знал, какие столбцы могут быть отсортированы. – darkheir

+0

И вы уверены, что есть более 10 предметов? – davey

+0

@ davey: Да, более 10 элементов – Sky

ответ

1

У меня была такая же проблема при реализации нескольких гридов на одной странице, решение, которое сработало для меня, было, я проверил URL-адрес сетки ajax-вызова, а перед обновлением я манипулировал URL-адресом и задал правильный URL-адрес и параметры до ajax запрос!

как:

$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', 
), 
)); 
+0

Я пробовал, но его не работает – Sky

+0

Вы сделали функцию для beforAjaxUpdate? можете ли вы поделиться им? а также проверьте это http://stackoverflow.com/questions/12626622/how-do-i-use-the-ajaxurl-parameter-of-cgridview-in-yii – tinybyte

Смежные вопросы