我想在模型字段状态的基础上隐藏Yii2 GridView Action Column按钮。 如果status = 1,则仅隐藏视图按钮。 我怎么样?
代码:
[
'class' => 'yii\grid\ActionColumn',
'contentOptions' => ['style' => 'width:260px;'],
'header'=>'Actions',
'template' => '{view} {delete}',
'buttons' => [
//view button
'view' => function ($url, $model) {
return Html::a('<span class="fa fa-search"></span>View', $url, [
'title' => Yii::t('app', 'View'),
'class'=>'btn btn-primary btn-xs',
]);
},
],
'urlCreator' => function ($action, $model, $key, $index) {
if ($action === 'view') {
$url ='/jobs/view?id='.$model->jobid;
return $url;
}
],
答案 0 :(得分:26)
你可以使用
['class' => ActionColumn::className(),'template'=>'{view} {update}' ]
在你的gridview上。
答案 1 :(得分:19)
添加
return $model->status == 1
? Html::a('<span class="fa fa-search"></span>View', $url, [
'title' => Yii::t('app', 'View'),
'class' =>'btn btn-primary btn-xs',
])
: '';
答案 2 :(得分:14)
使用visibleButtons
类的ActionColumn
属性:
[
'class' => 'yii\grid\ActionColumn',
'visibleButtons' => [
'view' => function ($model, $key, $index) {
return $model->status !== 1;
}
]
]
参考:https://www.yiiframework.com/doc/api/2.0/yii-grid-actioncolumn#$visibleButtons-detail
答案 3 :(得分:6)
在yii2中使用return Url::to(['controler/action']);
共
[
'class' => 'kartik\grid\ActionColumn',
'template' => '{today_action}',
'buttons' => [
'today_action' => function ($url, $model) {
return Html::a('<span class="glyphicon glyphicon-check"></span>', $url,
[
'title' => Yii::t('app', 'Change today\'s lists'),
]);
}
],
'urlCreator' => function ($action, $model, $key, $index) {
if ($action === 'today_action') {
return Url::to(['customers/today']);
}
}
],
我正在使用kartik扩展程序,但可以使用yii
答案 4 :(得分:6)
可以这样做
[
'class' => 'yii\grid\ActionColumn',
'contentOptions' => [],
'header'=>'Actions',
'template' => '{view} {update} {delete}',
'visibleButtons'=>[
'view'=> function($model){
return $model->status!=1;
},
]
],
答案 5 :(得分:3)
您需要将模板propiety('template'=&gt;'{update} {delete}')添加到您放置选项的列arry
'columns' => [
['class' => 'yii\grid\SerialColumn'],
'id',
'otherfield'
['class' => 'yii\grid\ActionColumn','template'=>'{update} {delete}'],
答案 6 :(得分:1)
这就是我所做的https://github.com/Mihai-P/yii2theme-brain/blob/master/widgets/ActionColumn.php简而言之,我已经扩展了ActionColumn类并使用了我自己的而不是默认的类。 我的类中有更多内容,比如检查访问权限并只显示他们有权访问的按钮,你可以忽略该部分,只是使用方法来检查检查模型的方法。我认为这更可重用,然后在视图中编写代码。如果您开始在视图中编写代码,那么您必须为每个屏幕反复编写相同的代码。
我相信你也可以在视图中做你想做的事情,尝试使用
'template' => function ($model) {
.............
}
并返回&#39; {view} {delete}&#39;或&#39; {删除}&#39;
答案 7 :(得分:1)
您只需更改一行。
<强>替换:强>
'template' => '{update} {delete}',
&#13;
。通过强>
'template' => function($model){
return ($model->status==1)?'{update} {delete}':'{view} {update} {delete}';
},
&#13;
答案 8 :(得分:0)
它适用于我:
'buttons' => [
'view' => function ($url, $model) {
return $model->status == '' ? Html::a('<span class="fa fa-paperclip fa-fw fa-border"></span>', $url, [
'title' => Yii::t('app', 'Visualizar'),
//'class'=>'btn btn-primary btn-xs',
]) : '';
},
与:return $ model-&gt; status ==''相同? 'show_action_here':'no_show';
答案 9 :(得分:0)
这个对我有用。完成ActionColumn代码
[
'class' => 'yii\grid\ActionColumn',
'contentOptions' => ['style' => 'width:260px;'],
'header'=>'Actions',
'template' => '{view}',
'buttons' => [
//view button
'view' => function ($url, $model) {
return Html::a('<span class="fa fa-search"></span>View', $url,
[ 'title' => Yii::t('app', 'View'), 'class'=>'btn btn-primary btn-xs', ]) ;
},
],
'urlCreator' => function ($action, $model, $key, $index) {
if ($action === 'view') {
$url = \yii\helpers\Url::toRoute(['general-info/viewalldetails', 'id' => $key]);
return $url;
}
}
],