yii2 GridView中如何给每个TH和TD添加css class

How to add css class to each TH and TD in yii2 GridView

我正在尝试使用 GridView:widget() 中的列索引在 yii2 gridview 中显示数据。我在数据库中有大量字段(大约 40 个),需要显示所有字段,并且想为每个 TH 和 TD 添加相同的 css class 名称作为字段名称。 我知道我可以使用下面的代码来实现,但我必须写很多代码:

'columns' => [
        [
            'attribute' => 'ID',
            'contentOptions' => ['class' => 'ID'],
            'headerOptions' => ['class' => 'ID']
        ],
        [
            'attribute' => 'Insured',
            'contentOptions' => ['class' => 'Insured'],
            'headerOptions' => ['class' => 'Insured']
        ],

        .
        .

        [
            'attribute' => 'Phone',
            'contentOptions' => ['class' => 'Phone'],
            'headerOptions' => ['class' => 'Phone']
        ]
],  

有没有其他有效的方法可以使用一些回调函数或其他任何东西?

在您的 GridView 中将自定义列 class 设置为默认值:

'dataColumnClass' => 'name\space\for\MyDataColumn',

创建扩展 yii\grid\DataColumn.

MyDataColumn class

内加:

public function init()
{
    parent::init();
    if (!empty($this->attribute) {
        $this->headerOptions = array_merge($this->headerOptions, [
            'class' => $this->attribute,
        ]);
        $this->contentOptions = array_merge($this->contentOptions, [
            'class' => $this->attribute,
        ]);
    }
}