Как вернуть форматированные данные в GridView?

В Yii фреймворке, для отображения данных в виде таблицы, часто используется виджет GridView. Он предоставляет удобный способ форматирования данных и представления результатов запросов к базе данных.

Когда вы хотите вернуть форматированные данные в GridView, вам нужно определить колонки (columns) и форматирование для каждой колонки, чтобы задать, какие данные и как они должны быть отображены.

1. Определение GridView
Сначала нужно создать GridView виджет и указать источник данных, например, массив или провайдер данных. В вашем случае, если вы хотите отображать результаты запросов к базе данных, вы можете использовать ActiveDataProvider.

use yiigridGridView;
use yiidataActiveDataProvider;

$dataProvider = new ActiveDataProvider([
    'query' => YourModelClass::find(),
]);

echo GridView::widget([
    'dataProvider' => $dataProvider,
    'columns' => [
        // описания колонок
    ],
]);

2. Описание колонок
Затем нужно описать колонки, указав форматирование для каждой. Можно использовать различные виды колонок, такие как DataColumn для стандартной форматированной колонки или ClosureColumn для кастомного форматирования.

Пример форматирования столбца с помощью функции formatCurrency:

use yiigridDataColumn;

[
    'attribute' => 'amount',
    'format' => 'currency',
    'value' => function($model) {
        return formatCurrency($model->amount);
    },
],

Здесь attribute определяет имя атрибута модели, который будет отображаться в данной колонке. format задает формат отображения значения атрибута (в данном случае - 'currency', который использует конфигурацию приложения для форматирования валюты). value - функция, которая возвращает отформатированное значение атрибута в колонке.

3. Форматирование CSS и HTML
Вы также можете форматировать отображение данных с помощью CSS и HTML. Вы можете использовать опции contentOptions и headerOptions для установки CSS-классов для ячеек и заголовков колонок.

Пример CSS-форматирования ячейки:

[
    'attribute' => 'status',
    'value' => function($model) {
        return $model->status == 'active' ? 'Active' : 'Inactive';
    },
    'contentOptions' => function($model, $key, $index, $column) {
        return $model->status == 'active' ? ['class' => 'text-success'] : ['class' => 'text-danger'];
    },
],

В этом примере, contentOptions задает класс text-success для активного статуса и класс text-danger для неактивного статуса. Это оформление может быть стилизовано через CSS.

В заключение, использование GridView в Yii дает вам возможность удобно форматировать и отображать данные в таблице с помощью различных опций и функций. Вы можете определить колонки, задать форматирование и CSS для ячеек для настройки отображения ваших данных в GridView.