Yii2:使用kartik\gridview在表的顶部添加空行

Yii2:使用kartik\gridview在表的顶部添加空行,gridview,yii2,kartik-v,Gridview,Yii2,Kartik V,我正在尝试使用在表的顶部插入一个空行,以便可以向每列添加自定义组件 我希望打印的结果如下: 到目前为止,我只通过添加filterModel插入了这一行: <?php $gridViewPesquisaPonto = GridView::widget([ 'moduleId' => 'gridview', 'dataProvider' => $pesquisaPontodataProvider, 'filterModel'

我正在尝试使用在表的顶部插入一个空行,以便可以向每列添加自定义组件

我希望打印的结果如下:

到目前为止,我只通过添加
filterModel
插入了这一行:

<?php
    $gridViewPesquisaPonto = GridView::widget([
        'moduleId' => 'gridview',
        'dataProvider' => $pesquisaPontodataProvider,
        'filterModel' => true, // The table row containing the filters is configured here
        'layout' => "{items}{summary}{pager}",
        'captionOptions' => ['class' => 'text-wrap'],
        'options' => [
            'id' => 'grid-pontos-pesquisa',
        ],
        'columns' => [
            // ...

您可以使用
GridView
beforeRow
选项,该选项接受闭包

函数($model、$key、$index、$grid)
在哪里

  • $model
    :正在呈现的当前数据模型
  • $key
    :与当前数据模型关联的键值
  • $index
    :由[[dataProvider]]返回的模型数组中数据模型的从零开始的索引
  • $grid
    GridView
    对象
您可以使用
$index
确定它是否位于第一行,并添加自定义行,如下所示

'beforeRow'=>function ($model, $key, $index, $grid){
    if($index===0){
        return "<tr>
        <td>1</td>
        <td>2</td>
        <td>3</td>
        <td>4</td>
        <td>5</td>
        </tr>";
    }

},
'beforeRow'=>函数($model、$key、$index、$grid){
如果($index==0){
返回“
1.
2.
3.
4.
5.
";
}
},

请记住添加或减少
列以匹配gridview中的列数。

我将使用此答案扩展穆罕默德·奥马尔·阿斯拉姆的回答。我想这将更加动态,并且不需要一直调整需要显示的列数


您可以使用
GridView
beforeRow
选项,该选项接受闭包

function ($model, $key, $index, $grid)
所以在这里,我们可以获取所有模型属性,甚至在显示之前检查它们

'beforeRow'=>function ($model){
    $row = "<tr>";
    //loop thru attributes
    foreach($model->attributes as $key => $value){
        $row .= "<td>" . $key . "</td>";
    }
    return $row .= "</tr>";
},
'beforeRow'=>函数($model){
$row=“”;
//循环通过属性
foreach($model->attributes as$key=>$value){
$row.=“.$key.”;
}
返回$row.=“”;
},

希望它能对您有所帮助。

谢谢您的回复,当然这条建议非常有用!OP从来没有告诉我他想在这些列中添加什么,所以我只添加了数字,因为他的主要问题是如何在那里添加一行。