隐藏Yii2 GridView操作按钮

隐藏Yii2 GridView操作按钮,yii2,Yii2,我想根据模型字段状态隐藏Yii2 GridView操作列按钮。 如果状态为=1,则仅隐藏视图按钮。 我怎么能 代码: [ 'class'=>'yii\grid\ActionColumn', “内容选项”=>[“样式”=>“宽度:260px;”], 'header'=>'Actions', '模板'=>'{view}{delete}', “按钮”=>[ //查看按钮 “查看”=>函数($url$model){ 返回Html::a('View',$url[ 'title'=>Yii::t('app'

我想根据模型字段状态隐藏Yii2 GridView操作列按钮。 如果状态为=1,则仅隐藏视图按钮。 我怎么能

代码:

[
'class'=>'yii\grid\ActionColumn',
“内容选项”=>[“样式”=>“宽度:260px;”],
'header'=>'Actions',
'模板'=>'{view}{delete}',
“按钮”=>[
//查看按钮
“查看”=>函数($url$model){
返回Html::a('View',$url[
'title'=>Yii::t('app','View'),
'class'=>'btn btn主btn xs',
]);
},
],
“urlCreator”=>函数($action、$model、$key、$index){
如果($action=='view'){
$url='/jobs/view?id='.$model->jobid;
返回$url;
}
],
简而言之,我扩展了ActionColumn类,并使用了我自己的类而不是默认类。 我的类中有更多的东西,比如检查访问权限,只显示他们可以访问的按钮,你可以忽略这个部分,只是使用检查方法来检查模型。我认为这是可重用的,然后在视图中编写代码。如果你开始在视图中编写代码,那么你必须编写相同的代码。在每个屏幕上重复

我相信您也可以在视图中执行您想要的操作,请尝试使用

'template' => function ($model) {
            .............
        }
并返回{view}{delete}或{delete}

加上

return$model->status==1
?Html::a('视图',$url,[
'title'=>Yii::t('app','View'),
'class'=>'btn btn主btn xs',
]) 
: '';
它对我有用:

         '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',                                  
                ]) : '';
            },
“按钮”=>[
“查看”=>函数($url$model){
返回$model->status=''?Html::a('',$url[
'title'=>Yii::t('app','visualizer'),
//'class'=>'btn btn主btn xs',
]) : '';
},

与:return$model->status=''‘show_action_here':‘no_show’;

在yii2中使用
return Url::to(['controller/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']);
            }
        }
            ],
[
'class'=>'kartik\grid\ActionColumn',
'模板'=>'{today_action}',
“按钮”=>[
“今日行动”=>功能($url$model){
返回Html::a(“”,$url,
[
'title'=>Yii::t('app','Change today's list'),
]);
}
],
“urlCreator”=>函数($action、$model、$key、$index){
如果($action==='today\u action'){
返回Url::to(['customers/today']);
}
}
],
我使用的是kartik扩展,但与yii配合使用很好

您可以使用
['class'=>ActionColumn::className(),'template'=>'{view}{update}']

在gridview上。

使用
ActionColumn
类中的
visibleButtons
属性:

[
    'class' => 'yii\grid\ActionColumn',
    'visibleButtons' => [
        'view' => function ($model, $key, $index) {
            return $model->status !== 1;
         }
    ]
]

参考资料:

这一条对我有效。完成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;
                }
                }
],
[
'class'=>'yii\grid\ActionColumn',
“内容选项”=>[“样式”=>“宽度:260px;”],
'header'=>'Actions',
'模板'=>'{view}',
“按钮”=>[
//查看按钮
“查看”=>函数($url$model){
返回Html::a('View',$url,
['title'=>Yii::t('app','View'),'class'=>btn-btn-primary-btn-xs',]);
},
],
“urlCreator”=>函数($action、$model、$key、$index){
如果($action=='view'){
$url=\yii\helpers\url::toRoute(['general-info/viewalldetails','id'=>$key]);
返回$url;
}
}
],

您需要将模板prociety('template'=>'{update}{delete}')添加到放置选项的列arry中

   'columns' => [
            ['class' => 'yii\grid\SerialColumn'],
            'id', 
            'otherfield'
['class' => 'yii\grid\ActionColumn','template'=>'{update} {delete}'],

你只需要换一行

替换:
'template'=>'{update}{delete}',
可以这样做

[
    'class' => 'yii\grid\ActionColumn',
    'contentOptions' => [],
    'header'=>'Actions',
    'template' => '{view} {update} {delete}',
    'visibleButtons'=>[
        'view'=> function($model){
              return $model->status!=1;
         },
    ]
],

只需添加
return$model->status==1?Html::a('View',$url,['title'=>Yii::t('app','View'),'class'=>'btn-btn-primary-btn-xs',])):“”;
您的代码对我有用,谢谢您可以将您的评论更改为下面的答案吗?是的…与:return$model->status=''相同?“”?“”“:”否“;不知道visibleButtons数组-很好很干净。谢谢。非常感谢。在这里的所有答案中,它对我帮助最大!
[
    'class' => 'yii\grid\ActionColumn',
    'contentOptions' => [],
    'header'=>'Actions',
    'template' => '{view} {update} {delete}',
    'visibleButtons'=>[
        'view'=> function($model){
              return $model->status!=1;
         },
    ]
],