显示actioncolumn仅为用户登录Gridview Yii2


Show actionCoumn only for user Login Gridview Yii2

我正试图为想要为我的网站发送反馈的用户制作反馈页面,我正在使用gridview来显示反馈列表。这是我制作的gridview代码。

<?= GridView::widget([
    'dataProvider' => $dataProvider,
    'filterModel' => $searchModel,
    'layout'=>"{items}{pager}",
    'tableOptions' => ['class' => 'table  table-bordered table-hover'],
    'showFooter'=>false,
    'showHeader' => false,
    'pager' => [
            'firstPageLabel' => 'First',
            'lastPageLabel' => 'Last',
        ],
    'columns' => [
        [   'attribute' => 'iduser.photo',
            'format' => 'html',
            'value'=>  function($data) { return Html::img($data->imageurl) . " <p class='feedback-username'>" . $data->username . "</p>"; },
            'contentOptions'=>['style'=>'max-width: 10px; max-height: 10px'],
        ],
        [   'attribute' => 'KOMENTAR',
            'format' => 'raw',
            'value' => function($model) { return $model->KOMENTAR  ."<br><p class='feedback-date'>". $model->TANGGAL ."</p>";},
        ],
        [   'class' => 'yii'grid'ActionColumn',
            'contentOptions'=>['style'=>'width: 5px;'],
            'template' => '{update} {delete}'
        ],
    ],
]); ?> 

在我的gridview中,它在每个反馈发送时显示动作列。但是我想要的是,动作列应该只显示用户登录发送的反馈。那么我应该在哪里定制它呢?

如果你想只在用户登录时显示ActionColumn,你可以这样做:

[
    'class' => 'yii'grid'ActionColumn',
    'template' => '{update} {delete}',
    'contentOptions' => ['style' => 'width:34px; font-size:18px;']
    'visible' => !Yii::$app->user->isGuest,
],

如果你想只显示用户创建的反馈的ActionColumn,那么你必须这样做:

[
    'format' => 'html',
    'value' => function($model) {
        if($model->user_id == Yii::$app->user->identity->id) {
            return Html::a('<i class="glyphicon glyphicon-pencil"></i>', ['update', 'id' => $model->id])
                .' '.Html::a('<i class="glyphicon glyphicon-trash"></i>', ['delete', 'id' => $model->id], [
                    'data' => ['confirm' => 'Do you really want to delete this element?','method' => 'post']
                ]
            );
        }
        return '';
    },
],

尝试将actionColumn

的可见选项设置为true或false
   //  for guest
   if(Yii::$app->user->isGuest)
   {
        $actionColumn =  [   'class' => 'yii'grid'ActionColumn',
                'template' => '{update} {delete}',
                'contentOptions' => ['style' => 'width:34px; font-size:18px;']
                'visible' => true,
            ],
   } 
   // for  users
   else
   {
        $actionColumn =   [   'class' => 'yii'grid'ActionColumn',
                'template' => '{update} {delete}',
                'contentOptions' => ['style' => 'width:34px; font-size:18px;']
                'visible' => false,
            ],
   }

   echo GridView::widget([
      'dataProvider' => $dataProvider,
      'filterModel' => $searchModel,
      'layout'=>"{items}{pager}",
      'tableOptions' => ['class' => 'table  table-bordered table-hover'],
      'showFooter'=>false,
      'showHeader' => false,
      'pager' => [
          'firstPageLabel' => 'First',
          'lastPageLabel' => 'Last',
       ],
       'columns' => [
         [   'attribute' => 'iduser.photo',
             'format' => 'html',
              'value'=>  function($data) { return Html::img($data->imageurl) . " <p class='feedback-username'>" . $data->username . "</p>"; },
              'contentOptions'=>['style'=>'max-width: 10px; max-height: 10px'],
         ],
         [   'attribute' => 'KOMENTAR',
             'format' => 'raw',
             'value' => function($model) { return $model->KOMENTAR  ."<br><p class='feedback-date'>". $model->TANGGAL ."</p>";},
        ],
        $actionColumn
    ],
 ]); ?> 

试试:

<?php 
   // non logged in users
   if(Yii::$app->user->isGuest)
   {
        $actionColumn = [];
   } 
   // logged in users
   else
   {
        $actionColumn = [   'class' => 'yii'grid'ActionColumn',
            'contentOptions'=>['style'=>'width: 5px;'],
            'template' => '{update} {delete}'
        ];
   }
     echo GridView::widget([
    'dataProvider' => $dataProvider,
    'filterModel' => $searchModel,
    'layout'=>"{items}{pager}",
    'tableOptions' => ['class' => 'table  table-bordered table-hover'],
    'showFooter'=>false,
    'showHeader' => false,
    'pager' => [
            'firstPageLabel' => 'First',
            'lastPageLabel' => 'Last',
        ],
    'columns' => [
        [   'attribute' => 'iduser.photo',
            'format' => 'html',
            'value'=>  function($data) { return Html::img($data->imageurl) . " <p class='feedback-username'>" . $data->username . "</p>"; },
            'contentOptions'=>['style'=>'max-width: 10px; max-height: 10px'],
        ],
        [   'attribute' => 'KOMENTAR',
            'format' => 'raw',
            'value' => function($model) { return $model->KOMENTAR  ."<br><p class='feedback-date'>". $model->TANGGAL ."</p>";},
        ],
        $actionColumn
    ],
]); ?>