隐藏Yii2 GridView操作按钮

时间:2014-11-26 05:51:19

标签: 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;
        }

       ],

10 个答案:

答案 0 :(得分:26)

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

答案 1 :(得分:19)

Read

添加

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)

您只需更改一行。

<强>替换:

&#13;
&#13;
'template' => '{update} {delete}',
&#13;
&#13;
&#13;

。通过

&#13;
&#13;
'template' => function($model){
   return ($model->status==1)?'{update} {delete}':'{view} {update} {delete}';
},
&#13;
&#13;
&#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;
                }
                }
],