Yii2: порядок экспорта столбцов

Я хотел бы, чтобы файл экспорта (особенно XLS), сгенерированный Yii2-export, имитировал gridview, экспортируя все столбцы в порядке, выбранном во всплывающем меню настройки gridview.

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

B title| A title
-------|---------
B data | A data

Однако экспорт полностью игнорирует этот параметр и выводит A в качестве первого столбца (поскольку он определяется первым в массиве столбцов, переданном в качестве конфигурации):

A title  | B title
---------|----------
A data   | B data

В БД у меня есть таблица tbl_dynagrid, которая должна содержать конфигурацию gridview. Я нашел соответствующую запись с идентификатором gridview_.
Но содержимое столбца данных не меняется при переупорядочении столбцов через конфигурацию gridview.

Есть ли способ, как загрузить (желательно самим PHP, без JS) порядок столбцов и экспортировать в файл XLS с учетом этого порядка?

Спасибо за помощь.

Обновить:

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

Таким образом, мне нужен способ, как перевести хэши, используемые в меню настройки gridview в качестве идентификаторов столбцов, в реальные имена столбцов или около того.

Актуальный код:

$dataProvider = //..
$pageName = //..

Массив столбцов:

$columns = [
[ 'attribute' => 'col1', 'encodeLabel' => false, 'label' => 'Column A' ],
[ 'attribute' => 'col2', 'encodeLabel' => false, 'label' => 'Column B' ]
];

Экспортный виджет:

echo ExportMenu::widget([
'dataProvider' => $dataProvider,
'target'=>ExportMenu::TARGET_SELF,
'showConfirmAlert'=>false,
'container'=>['class'=>'myclass'],
'filename'=>'test',
'columns' => $columns,
'fontAwesome' => true,
'dropdownOptions' => [
'label' => Yii::t('layout','Export'),
'class' => 'btn btn-default'
]]);

И наконец динагрид

$dynagrid = DynaGrid::begin([
'columns'=>$columns,
'theme'=>'simple-striped',
'showPersonalize'=>true,
'allowThemeSetting'=>false,
'allowFilterSetting'=>false,
'allowSortSetting'=>false,
'toggleButtonGrid'=>['class'=>'toggleButton'],
'gridOptions'=>[
'dataProvider'=>$dataProvider,
'options'=>['class'=>'myid'],
'filterModel'=>$searchModel,
'showPageSummary'=>false,
'floatHeader'=>false,
'pjax'=>false,
'toolbar' =>  [
['content'=>'{dynagridFilter}{dynagridSort}{dynagrid}'],
'{export}',
]
],
'options'=>['id'=>$pageName]
]);

Все, что я хочу — это иметь возможность экспортировать столбцы в порядке, выбранном в gridview, а не в том порядке, в котором они установлены в массиве $ columns.

0

Решение

Экспортируемые данные основаны на dataProvider. исходя из этого, вы должны выбрать столбец в нужной вам последовательности.

Вы должны построить dataProvider на основе выбора, где вы назначаете каждый столбец в нужной вам последовательности.

$yourDataProvider = YourModel::find()
->select('col1, col2, col3 ...  ')
->where( ... )
....
0

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector