隐藏Yii2 GridView操作按钮

Muh*_*zad 28 yii2

我想在模型字段状态的基础上隐藏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;
        }

       ],
Run Code Online (Sandbox Code Playgroud)

ris*_*2m8 27

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


Evg*_*nko 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', 
      ]) 
    : '';
Run Code Online (Sandbox Code Playgroud)


Ven*_*toh 14

使用课堂上的visibleButtons属性ActionColumn:

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

参考:https://www.yiiframework.com/doc/api/2.0/yii-grid-actioncolumn#$visibleButtons-detail


ope*_*org 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']);
            }
        }
            ],
Run Code Online (Sandbox Code Playgroud)

我正在使用kartik扩展,但与yii工作正常


小智 6

它可以这样做

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