Как добавить столбец флажка в существующие столбцы gridview в yii2? - PullRequest
0 голосов
/ 02 декабря 2018

Я хочу добавить столбец в gridview, но я не хочу перечислять все столбцы (потому что есть некоторые столбцы по умолчанию).Я знаю, что могу добавить столбец следующим образом:

$widget = Yii::createObject([
    'class' => 'yii\grid\GridView',
    'dataProvider' => $dataProvider,
    'columns' => [
        'col1',
        'col2',
        'class' => 'yii\grid\CheckboxColumn',
    ]
]);

, но я не хочу перечислять все столбцы по умолчанию и просто добавить столбец флажка.как следует:

$widget = Yii::createObject([
    'class' => 'yii\grid\GridView',
    'dataProvider' => $dataProvider,
    'columns' => [
        'class' => 'yii\grid\CheckboxColumn',
    ]
]);

Затем он будет отображаться в конце столбцов по умолчанию.Как я могу это сделать?

1 Ответ

0 голосов
/ 03 декабря 2018

Платформа yii не поддерживает эту потребность.Мы можем сделать это другими способами.

Первый: получить все имена столбцов и вставить столбец флажков перед отображением списка

$query = DataModel::find()->select('...')->asArray();

$columns = array_keys($query->one()); // if you know that all column names can also be assigned directly without dynamic acquisition
array_unshift(['class' => \yii\grid\CheckboxColumn::class], $columns);

$widget = Yii::createObject([
    'class' => 'yii\grid\GridView',
    'dataProvider' => new \yii\data\ActiveDataProvider([
        'query' => $query,
    ]),
    'columns' => $columns,
]);

]);

Второй: расширить yii\grid\GridView::initColumns() метод фреймворка yii.Например:

class MyGridView extends \yii\grid\GridView {
    public $expandColumns = [];

    protected function initColumns() {
        parent::initColumns();
        \yii\helpers\ArrayHelper::merge($this->columns, $this->expandColumns);
    }
}

// in view
$widget = Yii::createObject([
    'class' => MyGridView::class,
    'dataProvider' => $dataProvider,
    'expandColumns' => [
        [
            'class' => \yii\grid\CheckboxColumn::class,
        ],
    ]
]);

Ответ на перевод из Google Translate, надеюсь, вам поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...