2014-10-30 4 views
1

Как фильтровать записи, используя роль пользователя в виде сетки пользователя?как фильтровать с использованием роли пользователя в виде сетки пользователя?

Я использую расширение yii-пользователя. Я могу показать роль пользователя в gridview пользователя/администратора, но я могу использовать фильтр на этом? Вот мое мнение:

$this->widget('zii.widgets.grid.CGridView', array(
    'id'=>'user-grid', 
    'dataProvider'=>$model->search(), 
    'filter'=>$model, 
    'columns'=>array(
     array(
      'name' => 'id', 
      'type'=>'raw', 
      'value' => 'CHtml::link(CHtml::encode($data->id),array("admin/update","id"=>$data->id))', 
     ), 
     array(
      'name' => 'username', 
      'type'=>'raw', 
      'value' => 'CHtml::link(UHtml::markSearch($data,"username"),array("admin/view","id"=>$data->id))', 
     ), 
     array(
      'name'=>'email', 
      'type'=>'raw', 
      'value'=>'CHtml::link(UHtml::markSearch($data,"email"), "mailto:".$data->email)', 
     ), 
     'create_at', 
     'lastvisit_at', 
     /*array(
      'name'=>'superuser', 
      'value'=>'User::itemAlias("AdminStatus",$data->superuser)', 
      'filter'=>User::itemAlias("AdminStatus"), 
     ),*/ 
     array(
      'name'=>'status', 
      'value'=>'User::itemAlias("UserStatus",$data->status)', 
      'filter' => User::itemAlias("UserStatus"), 
     ), 
     array(
      //'name'=>'assignments', 
      'header'=>Rights::t('core', 'Roles'), 
      'type'=>'raw', 
      'value'=>function($data) { 
             $roles = Rights::getAssignedRoles($data->id); 
             foreach($roles as $role){ 
              $user_role=$role->name; 
             } 
             return $user_role; 
            } 
     ), 
     array(
      'class'=>'CButtonColumn', 
      'template'=>'{view}{delete}' 
     ), 
    ), 
)); 

ответ

1

Вы можете добавить фильтр, как показано ниже:

array(
     //'name'=>'assignments', 
     'header'=>Rights::t('core', 'Roles'), 
     'type'=>'raw', 
     'filter'=>CHtml::listData(Rights::model()->findAll(),'id','name'), //*** 
     'value'=>function($data) { 
            $roles = Rights::getAssignedRoles($data->id); 
            foreach($roles as $role){ 
             $user_role=$role->name; 
            } 
            return $user_role; 
           } 
    ), 

Я предположил, что Rights модель и держит роли на нем id, name.

По строке, в которой я указал, что с комментариями ***, Yii будет генерировать выпадающее меню в качестве фильтра, в котором имя роли будет указано как значение параметра, а идентификатор ролей - как значение параметра.

+0

Не работает. Получение этой ошибки «Вызов неопределенного метода Rights :: model()» –

+0

@SRana Как я уже сказал, я предположил, что у вас есть модель с именем «Права». Пожалуйста, замените его на собственную модель. –

+0

Я не знаю, какая модель будет делать это. Потому что я использую Yii-прав модуль –

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