DataGrid - добавить префикс к CSS классу из $data

Общие вопросы по использованию второй версии фреймворка. Если не знаете как что-то сделать и это про Yii 2, вам сюда.
Ответить
bellatrix
Сообщения: 13
Зарегистрирован: 2018.01.10, 13:06

DataGrid - добавить префикс к CSS классу из $data

Сообщение bellatrix »

Всем добрый день.
При выводе строчек через виджет GridView мне нужно добавлять к CSS-классу одной из ячеек ('contentOptions') значение параметра level, который имеется в базе данных и доступен в замыкании как $data->level.
То есть, если бы $data можно было использовать не только в 'content', то это выглядело бы так:

Код: Выделить всё

[
    'attribute'=>'category',
    'headerOptions' => ['class' => 'category'],
    'contentOptions' => [
        'class' => 'level' . $data->level,
    ],
    'content' => function( $data ) {
        $text = $data->category;
        $link = $this->context->id . '/update/?id=' . $data->id;
        return Html::a($text, [$link]);
    },
],
Решил не тратить время и спросить у сообщества, как это сделать по фэншую?
andku83
Сообщения: 988
Зарегистрирован: 2016.07.01, 10:24
Откуда: Харьков

Re: DataGrid - добавить префикс к CSS классу из $data

Сообщение andku83 »

возможно вам поможет управление всей строкой

Код: Выделить всё

    <?= GridView::widget([
        'dataProvider' => $dataProvider,
        'filterModel' => $searchModel,
        'rowOptions' => function ($model) {
            return ['class' => 'color-'.($model->status ? 'active' : 'inactive')];
        },
        'columns' => [
            ...
        ]
    ]);
Последний раз редактировалось andku83 2018.02.22, 13:29, всего редактировалось 1 раз.
andku83
Сообщения: 988
Зарегистрирован: 2016.07.01, 10:24
Откуда: Харьков

Re: DataGrid - добавить префикс к CSS классу из $data

Сообщение andku83 »

и кстати если посмотреть внутрь то там написано

Код: Выделить всё

    /**
     * @var array|\Closure the HTML attributes for the data cell tag. This can either be an array of
     * attributes or an anonymous function ([[Closure]]) that returns such an array.
     * The signature of the function should be the following: `function ($model, $key, $index, $column)`.
     * Where `$model`, `$key`, and `$index` refer to the model, key and index of the row currently being rendered
     * and `$column` is a reference to the [[Column]] object.
     * A function may be used to assign different attributes to different rows based on the data in that row.
     *
     * @see \yii\helpers\Html::renderTagAttributes() for details on how attributes are being rendered.
     */
    public $contentOptions = [];
так что нужно просто правильно написать
bellatrix
Сообщения: 13
Зарегистрирован: 2018.01.10, 13:06

Re: DataGrid - добавить префикс к CSS классу из $data

Сообщение bellatrix »

Аа, точно.
Спасибо.
Ответить