如何在网格视图 YII2 高级模板中为特定行添加操作按钮


How to add an action button for a specific row in gridview YII2 Advanced Template?

我有一个数据库中特定表的GridView。此表有一个状态列,该列为 0 or 1

我想在状态列为 0 的行的GridView中添加一个更新操作按钮,只是为了帮助管理员更新它。

我试过了,但有些不对劲:

 [
       'attribute' => 'Status',
       'format'    => 'raw',
        'value'    => function ('backend'models'Document $model) {
                         if ($model->Status == 0) {
                                ['class' => 'yii'grid'ActionColumn',
                                    'template' => '{Update}',
                                ];
                            } 
                        },
],

最简单的方法是从 ActionColumn 类创建扩展,并且只为您的状态呈现。

Class StatusActionColumn extends ActionColumn 
{
    public $testStatus = 0 
    protected function renderDataCellContent($model, $key, $index)
    {
      if ($model->Status == $this->testStatus) {
        return parent::renderDataCellContent($model, $key, $index);
      }
    }
 }

或者buttons,您可以通过

 [
    'class' => ActionColumn::className(),
    'buttons' => [
        'update' => function ($url, $model, $key) {
            if ($model->Status == 0 ) {
                $options = [
                'title' => Yii::t('yii', 'Update'),
                'aria-label' => Yii::t('yii', 'Update'),
                'data-pjax' => '0',
                ];
                return Html::a('<span class="glyphicon glyphicon-pencil"></span>', $url, $options);
            }
        },
    ],
],

我会做第一种方法,因为通过这种方式,您还可以轻松添加视图、更新或其他自定义按钮。