Сохраняет данные в xls, csv, word, html, pdf файлы. Если, в представлении, модель Search использовалась вместе с DataProvider для вывода GridView и применялся фильтр, то к сохраняемым данным будет также применен этот фильтр.
Установка:
php composer.phar require "phpnt/yii2-export" "*"
или
composer require phpnt/yii2-export
или добавить в composer.json файл
"phpnt/yii2-export": "*"
// в файле настройки приложения (main.php - Advanced или web.php - Basic) добавляется класс в controllerMap
...
'controllerMap' => [
'export' => 'phpnt\exportFile\controllers\ExportController'
],
'components' => [
...
],
...
class GeoCitySearch extends GeoCity
{
...
// указываются свойства, которые нужно выводить в файлы
public function exportFields()
{
return [
'id' => function ($model) {
/* @var $model User */
return $model->id;
},
'name_ru',
'region_id' => function ($model) {
/* @var $model GeoCity */
if (isset($model->region->name_ru)) {
return $model->region->name_ru;
}
return false;
},
'lat',
'lon'
];
}
...
}
...
// cоздается стандартное действие для вывода данных
public function actionExportFile()
{
$searchModel = new GeoCitySearch();
$dataProvider = $searchModel->search(\Yii::$app->request->queryParams);
return $this->render('export-file', [
'searchModel' => $searchModel,
'dataProvider' => $dataProvider,
]);
}
...
use phpnt\exportFile\ExportFile;
use yii\grid\GridView;
/* @var $searchModel \common\models\GeoCitySearch */
/* @var $dataProvider yii\data\ActiveDataProvider */
// минимальные настройки
echo ExportFile::widget([
'model' => 'common\models\GeoCitySearch', // путь к модели
'searchAttributes' => $searchModel, // фильтр
]) ?>
<?= GridView::widget([
'dataProvider' => $dataProvider,
'filterModel' => $searchModel,
'columns' => [
...
]
]);
?>
use phpnt\exportFile\ExportFile;
use yii\grid\GridView;
/* @var $searchModel \common\models\GeoCitySearch */
/* @var $dataProvider yii\data\ActiveDataProvider */
// максимальные настройки
echo ExportFile::widget([
'model' => 'common\models\search\UserSearch', // путь к модели
'title' => 'Заголовок документа',
'queryParams' => Yii::$app->request->queryParams,
'getAll' => true, // все записи - true, учитывать пагинацию - false
'csvCharset' => 'Windows-1251', // кодировка csv файла: 'UTF-8' (по умолчанию) или 'Windows-1251'
'buttonClass' => 'btn btn-primary', // класс кнопки
'blockClass' => 'pull-left', // класс блока в котором кнопка
'blockStyle' => 'padding: 5px;', // стиль блока в котором кнопка
// экспорт в следующие файлы (true - разрешить, false - запретить)
'xls' => true,
'csv' => true,
'word' => true,
'html' => true,
'pdf' => true,
// шаблоны кнопок
'xlsButtonName' => Yii::t('app', 'MS Excel'),
'csvButtonName' => Yii::t('app', 'CSV'),
'wordButtonName' => Yii::t('app', 'MS Word'),
'htmlButtonName' => Yii::t('app', 'HTML'),
'pdfButtonName' => Yii::t('app', 'PDF')
]) ?>
<?= GridView::widget([
'dataProvider' => $dataProvider,
'filterModel' => $searchModel,
'columns' => [
...
]
]);
?>