繁体   English   中英

显示操作仅针对用户登录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设置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
    ],
]); ?> 

如果只想在用户登录时显示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 '';
    },
],

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

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