Yii2 GridView自定义标题行

Won*_*nka 18 gridview row header yii2

在我的视图代码中我有这个:

<?= GridView::widget([
        'dataProvider' => $dataProvider,
        'columns' => [
            ['class' => 'yii\grid\SerialColumn'],
             ['label' => 'Training Score',
               'attribute' => 'scoreTraining',
               'format' => ['decimal',2],
             ],
             ['label' => 'Exam Score',
               'attribute' => 'scoreExam',
               'format' => ['decimal',2],
             ],
        ],
    ]);
Run Code Online (Sandbox Code Playgroud)

通常,标题名称为"Training Score"和"Exam Score"

是否可以在yii2 gridview中自定义标题行?所以我的标题行看起来像2行..

<table border=1>
  <tr><th>Training <br> Score</th><th>Exam <br> Score</th></tr>
</table>
Run Code Online (Sandbox Code Playgroud)

aro*_*hev 23

要实现这一点,请使用headerproperty而不是label:

<?= GridView::widget([
    'dataProvider' => $dataProvider,
    'columns' => [
        ['class' => 'yii\grid\SerialColumn'],
        [
            'header' => 'Training <br> Score',
            'attribute' => 'scoreTraining',
            'format' => ['decimal', 2],
        ],
        [
            'header' => 'Exam <br> Score',
            'attribute' => 'scoreExam',
            'format' => ['decimal', 2],
        ],
    ],
]);
Run Code Online (Sandbox Code Playgroud)

这样就不会对HTML内容进行编码.

官方文档:

  • 好吧,但是这样排序就丢失了,新标题(标题)变成了纯文本.@arogachev (7认同)

小智 12

使用'label'属性设置标题:

http://www.yiiframework.com/doc-2.0/yii-grid-datacolumn.html# $ label-detail

这样排序功能仍然有效.

使用'encodeLabel'=> false来允许HTML实体
工作:

http://www.yiiframework.com/doc-2.0/yii-grid-datacolumn.html# $ encodeLabel-detail

例:

 [
              'attribute' => 'firstname',
              'label' => 'First <br /> Name',
              'encodeLabel' => false,
 ],
Run Code Online (Sandbox Code Playgroud)