]> gitweb.erp-flowers.ru Git - erp24_rep/yii-erp24/.git/commitdiff
[ERP-88] Аплоад xlsx файла
authorAlexander Smirnov <fredeom@mail.ru>
Fri, 19 Jul 2024 08:03:54 +0000 (11:03 +0300)
committerAlexander Smirnov <fredeom@mail.ru>
Fri, 19 Jul 2024 08:03:54 +0000 (11:03 +0300)
docker/php/Dockerfile
erp24/actions/motivation/UploadXlsxAction.php [new file with mode: 0644]
erp24/composer.json
erp24/controllers/MotivationController.php
erp24/views/motivation/upload-xlsx.php [new file with mode: 0644]

index d6386a79a16626bf29e30f4477718487cbd06ad7..2de2f1f105183566c37cd6e7530c230f8cbd7a1b 100644 (file)
@@ -1,11 +1,13 @@
-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
 
diff --git a/erp24/actions/motivation/UploadXlsxAction.php b/erp24/actions/motivation/UploadXlsxAction.php
new file mode 100644 (file)
index 0000000..ddd8f87
--- /dev/null
@@ -0,0 +1,36 @@
+<?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
index f6facf18f5670598c4ac771d7c6e2b4c15a63d1d..762e20ef34052934f42f5e69c27370d14026aa03 100644 (file)
@@ -26,7 +26,8 @@
         "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",
index 8175a6e3d7720583df8b68f038801552bfccaea8..ec0813a641b29e63421e9af492a4703fbd58d7c1 100644 (file)
@@ -10,6 +10,7 @@ class MotivationController extends Controller
     public function actions() {
         return [
             'index' => \yii_app\actions\motivation\IndexAction::class,
+            'upload-xlsx' => \yii_app\actions\motivation\UploadXlsxAction::class,
         ];
     }
 
diff --git a/erp24/views/motivation/upload-xlsx.php b/erp24/views/motivation/upload-xlsx.php
new file mode 100644 (file)
index 0000000..269cf1a
--- /dev/null
@@ -0,0 +1,29 @@
+<?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>