Yii2: добавить пустую строку вверху таблицы с помощью kartik\gridview

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

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

введите описание изображения здесь До сих пор мне удалось вставить эту строку, только добавив 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' => [
            // ...

Однако эта строка предназначена исключительно для использования фильтров, реализованных в представлении сетки. Я хотел бы знать, как вставить строку, чтобы я мог свободно ее редактировать (если у вас есть ссылка на документацию, содержащую этот ответ, пожалуйста, напишите в ответе, так как я еще не нашел).


person Saulo Lira    schedule 06.02.2020    source источник


Ответы (2)


Вы можете использовать опцию 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> столбцов, чтобы они соответствовали количеству столбцов в вашем представлении сетки.

person Muhammad Omer Aslam    schedule 06.02.2020

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

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

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

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

person Serghei Leonenco    schedule 07.02.2020
comment
Спасибо за ответ, наверняка этот совет был очень полезен! - person Saulo Lira; 07.02.2020
comment
ОП никогда не говорил, что он хотел в этих столбцах, поэтому я добавил только цифры, так как его главный вопрос заключался в том, как добавить туда строку. - person Muhammad Omer Aslam; 07.02.2020