public function actionEdit($id = null) {
$dataProvider = null;
+ $promocodesForExport = null;
if (!$id) {
$model = new Promocode;
$model->date_start = date("Y-m-d 00:00:00");
$model->date_end = date("Y-m-d 00:00:00", strtotime("+366 day", time()));
} else {
$model = Promocode::findOne($id);
- $dataProvider = new ActiveDataProvider(['query' => Promocode::find()->where(['base' => Promocode::BASE_SINGLE_USE, 'parent_id' => $id])
- ->orderBy(['created_at' => SORT_DESC, 'code' => SORT_ASC])]);
+ $promocodeQuery = Promocode::find()->where(['base' => Promocode::BASE_SINGLE_USE, 'parent_id' => $id])
+ ->orderBy(['created_at' => SORT_DESC, 'code' => SORT_ASC]);
+ $dataProvider = new ActiveDataProvider(['query' => $promocodeQuery]);
+ $promocodesForExport = $promocodeQuery->all();
}
/** @var $model Promocode */
if (Yii::$app->request->isPost && $model->load(Yii::$app->request->post())) {
var_dump($model->getErrors());
}
}
- return $this->render('edit', compact('model', 'dataProvider'));
+ return $this->render('edit', compact('model', 'dataProvider', 'promocodesForExport'));
}
}
\ No newline at end of file
/** @var $model Promocode */
/** @var $dataProvider ActiveDataProvider */
+/** @var $promocodesForExport array */
$this->registerJsFile('https://unpkg.com/xlsx@0.15.1/dist/xlsx.full.min.js', ['position' => \yii\web\View::POS_END]);
<script>
function htmlTableToExcel(type){
- var data = document.querySelector('table');
+ var data = document.querySelector('#promocodesForExport');
var excelFile = XLSX.utils.table_to_book(data, {sheet: "sheet1"});
XLSX.write(excelFile, { bookType: type, bookSST: true, type: 'base64' });
moment.locale('ru');
XLSX.writeFile(excelFile, 'SingleUsePromocodeTable_' + moment().format('L') + '.' + type);
}
</script>
-
+ <div style="display: none;">
+ <table id="promocodesForExport">
+ <tbody>
+ <?php foreach($promocodesForExport as $pc /** @var $pc Promocode */): ?>
+ <tr><td><?= $pc->code ?></td></tr>
+ <?php endforeach; ?>
+ </tbody>
+ </table>
+ </div>
<?= GridView::widget([
'dataProvider' => $dataProvider,
'columns' => [