Показать actionCoumn только для пользователя Войти Gridview Yii2

Я пытаюсь создать страницу обратной связи для пользователей, которые хотят отправить отзыв для моего веб-сайта, и я использую 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 он показывает столбец действий при каждом отправленном отзыве. но я хочу, чтобы столбец действий показывал только отзывы, отправленные только логином пользователя. так где мне его настроить?

0

Решение

Если вы хотите показывать 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 '';
},
],
0

Другие решения

Попробуйте этот способ установить true или false видимый параметр для actionColumn

   //  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
],
]); ?>
2

Просто попробуйте:

<?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
],
]); ?>
0
По вопросам рекламы [email protected]