-FROM php:7.4-rc-fpm-alpine
+FROM php:8.1-fpm-alpine
# Install tools required for build stage
RUN apk add --update --no-cache \
bash curl wget rsync ca-certificates openssl openssh git tzdata openntpd \
libxrender fontconfig libc6-compat
-RUN apk add --no-cache zlib libpng icu \
+RUN apk add --no-cache zlib libpng icu zip libzip-dev \
&& apk add --no-cache --virtual .deps zlib-dev libpng-dev icu-dev \
+ && docker-php-ext-configure zip \
+ && docker-php-ext-install zip \
&& docker-php-ext-install -j$(nproc) gd mysqli pdo pdo_mysql intl calendar opcache \
&& apk del .deps
--- /dev/null
+<?php
+
+namespace yii_app\actions\motivation;
+
+use Yii;
+use yii\base\Action;
+use yii\base\DynamicModel;
+use yii\web\UploadedFile;
+
+class UploadXlsxAction extends Action
+{
+ public function run() {
+ $model = DynamicModel::validateData([
+ 'myfile' => null
+ ], [
+ ['myfile', 'file', 'skipOnEmpty' => false, 'extensions' => 'xlsx'],
+ ]);
+
+ if (Yii::$app->request->isPost && $model->load(Yii::$app->request->post())) {
+ var_dump($_FILES);
+ if ($model->validate()) {
+ $xlsx = UploadedFile::getInstanceByName('myfile');
+ var_dump($xlsx);
+ $path = 'uploads/' . date("YdmHis") . rand(1000, 9999);
+ $xlsx->saveAs($path);
+ var_dump(321);
+ } else {
+ var_dump($model->getErrors());
+ var_dump(Yii::$app->request->post());
+ }
+ }
+
+ return $this->controller->render('upload-xlsx',
+ compact('model'));
+ }
+}
\ No newline at end of file
"unclead/yii2-multiple-input": "~2.0",
"kartik-v/yii2-widget-fileinput": "dev-master",
"yiisoft/yii2-imagine": "^2.3",
- "kartik-v/yii2-builder": "dev-master"
+ "kartik-v/yii2-builder": "dev-master",
+ "box/spout": "^3.3"
},
"require-dev": {
"yiisoft/yii2-debug": "~2.1.0",
public function actions() {
return [
'index' => \yii_app\actions\motivation\IndexAction::class,
+ 'upload-xlsx' => \yii_app\actions\motivation\UploadXlsxAction::class,
];
}
--- /dev/null
+<?php
+
+use yii\helpers\Html;
+use yii\base\DynamicModel;
+use yii\widgets\ActiveForm;
+
+/** @var $model DynamicModel */
+
+?>
+
+<div class="motivationUploadXlsx m-5">
+
+ <?php $form = ActiveForm::begin(['options' => ['enctype' => 'multipart/form-data']]) ?>
+
+ <div class="row">
+ <div class="col-4 d-flex justify-content-between align-items-center gap-4">
+ <div class="d-flex justify-content-around align-items-center gap-2">
+ <div class="mb-3">Excel file:</div>
+ <div style="display: inline-block"><?= $form->field($model, 'myfile')->fileInput()->label(false) ?></div>
+ </div>
+ <div class="d-flex justify-content-around align-items-center gap-2">
+ <div class="mb-3"><?= Html::submitButton('Загрузить', ['class' => 'btn btn-success btn-sm'])?></div>
+ </div>
+ </div>
+ </div>
+
+ <?php ActiveForm::end() ?>
+
+</div>