Yii2: добавить пустую строку в верхней части таблицы, используя kartik \ gridview - PullRequest
1 голос
/ 06 февраля 2020

Я пытаюсь вставить пустую строку вверху таблицы с помощью yii2-kartik \ gridview , чтобы я мог добавить пользовательские компоненты в каждый столбец.

I хотелось бы, чтобы результат был следующим:

enter image description here Пока мне удалось вставить эту строку только путем добавления 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. Я хотел бы знать, как вставить строку, чтобы можно было свободно ее редактировать (если у вас есть ссылка на документацию, содержащую этот ответ, пожалуйста, оставьте сообщение в ответе, поскольку я еще не нашел его).

Ответы [ 2 ]

1 голос
/ 07 февраля 2020

Я дополню ответ Мухаммед Омер Аслам этим. Я предполагаю, что это будет более динамичным c и не будет требовать постоянной корректировки количества отображаемых столбцов.

Вы можете использовать beforeRow параметр GridView, который занимает closure

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>";
},

Надеюсь, это будет полезно для вас.

1 голос
/ 07 февраля 2020

Вы можете использовать beforeRow параметр GridView, который принимает замыкание

function ($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>";
    }

},

Не забудьте добавить или уменьшить столбцы <td>, чтобы они соответствовали количеству столбцов в сетке.

...