use yii\helpers\ArrayHelper;
use yii\web\Controller;
use yii\web\NotFoundHttpException;
+use yii\web\UploadedFile;
use yii_app\records\BouquetComposition;
use yii_app\records\BouquetCompositionProducts;
+use yii_app\records\CityStore;
use yii_app\records\Products1c;
use yii_app\records\Products1cNomenclature;
+use yii_app\records\StoreType;
/**
* Контроллер для управления букетами и их составами.
public function actionView()
{
- return $this->render('view');
+ $storesTypeList = ArrayHelper::map(StoreType::find()->all(), 'id', 'name');
+ $storesList = ArrayHelper::map(CityStore::findAll(['visible' => CityStore::IS_VISIBLE]), 'id', 'name');
+ return $this->render('view', [
+ 'storesList' => $storesList
+ ]);
}
public function actionUpdate($id)
if (!$model) {
throw new NotFoundHttpException('Букет не найден.');
}
-//
-// if (Yii::$app->request->isPost) {
-// echo '<pre>';
-// var_dump(Yii::$app->request->post());
-// echo '</pre>';
-// die();
-// }
if (Yii::$app->request->isPost) {
try {
'availableItems' => $availableItems,
]);
}
- public function actionUploadPhoto() {
- $model = new \yii\base\DynamicModel(['images']);
+ public function actionUpload()
+ {
+ $model = new BouquetComposition();
if (Yii::$app->request->isPost) {
- $files = UploadedFile::getInstances($model, 'images');
- $savedFiles = [];
-
- foreach ($files as $file) {
- $filePath = 'uploads/' . $file->baseName . '.' . $file->extension;
- if ($file->saveAs($filePath)) {
- $savedFiles[] = $filePath;
- }
+ $model->photo_id = UploadedFile::getInstance($model, 'photo_id');
+ if ($model->validate() && $model->upload()) {
+ // Логика для сохранения
}
-
- // Переадресуем обратно, передавая список загруженных файлов
- return $this->render('upload', [
- 'initialPreview' => $savedFiles
- ]);
}
- return $this->render('upload', [
- 'initialPreview' => []
- ]);
+ return $this->render('upload', ['model' => $model]);
}
+
public function actionGetList()
{
\Yii::$app->response->format = \yii\web\Response::FORMAT_JSON;
use yii\helpers\Url;
use yii\widgets\ActiveForm;
use yii\widgets\DetailView;
+use yii_app\records\BouquetComposition;
use yii_app\records\MatrixType;
/** @var yii\web\View $this */
$this->params['breadcrumbs'][] = ['label' => 'Букеты', 'url' => ['index']];
$this->params['breadcrumbs'][] = $this->title;
?>
+<?php
+$this->registerCss("
+ .file-caption {
+ max-width: 62% !important;
+ }
+ ");
+?>
<div class="bouquet-view border-bottom-4 p-4">
+ <?php $form = ActiveForm::begin([
+ 'options' => ['enctype' => 'multipart/form-data'], // Это необходимо для загрузки файлов
+ ]);
+ ?>
<div class="row d-flex border-bottom justify-content-between align-items-center py-4">
<div class="col-md-8 d-flex align-items-center">
<h3 class="ms-3 mb-0"><?= Html::encode("Состав букета: ") ?></h3>
<h2 class="ms-2 mb-0"><strong><?= Html::encode($this->title) ?></strong></h2>
</div>
- <div class="col-md-4 d-flex align-items-center">
+ <div class="col-md-3 d-flex align-items-center">
<div class="me-3 text-end">
<?= Html::label('Тип матрицы', null, ['class' => 'h5 mb-0']) ?>
<br>
</div>
</div>
<div class="row">
- <div class="col-md-5">
- <div class="row mb-2">
- <div class="col-md-4 text-center font-weight-bold">Название</div>
+ <div class="col-md-4">
+ <div class="row mb-2 pt-3">
+ <div class="col-md-4 fw-bold ps-5">Название</div>
<div class="col-md-2 text-center font-weight-bold">Кол-во</div>
<div class="col-md-1 text-center font-weight-bold">% списания</div>
<div class="col-md-2 text-center font-weight-bold">мрж-ть</div>
<div class="col-md-2 text-center font-weight-bold">ср.шт. в сборке</div>
</div>
- <div class="list-container p-3 bg-white border rounded shadow-sm">
+ <div class="row p-3 bg-white border rounded shadow-sm">
<div class="row">
- <div class="col-md-4 text-center">Гладиолусы краш</div>
+ <div class="col-md-4">Гладиолусы краш</div>
<div class="col-md-2 text-center">3.0</div>
<div class="col-md-1 text-center">10%</div>
<div class="col-md-2 text-center">30%</div>
<div class="col-md-2 text-center">3.2%</div>
</div>
</div>
+ <div class="row pt-3">
+ <div class="col-md-8"></div>
+ <div class="col-md-4">
+ <?= Html::submitButton('Редактировать', ['class' => 'btn btn-warning w-100']) ?>
+ </div>
+ </div>
</div>
- <div class="site-index">
- <h1>Загрузите файлы</h1>
+ <div class="col-md-5">
+ <div class="row w-100 w-md-75 w-lg-50">
+ <?php $model = new BouquetComposition(); ?>
+ <div class="row mb-2"><?= Html::label("Фото", null, ['class' => 'text-center font-weight-bold pt-5 h5']) ?></div>
+ <?= $form->field($model, 'photo_id[]')->widget(FileInput::class, [
+ 'options' => [
+ 'id' => 'bouquet-file-upload',
+ 'multiple' => true, // Поддержка выбора нескольких файлов
+ ],
+ 'language' => 'ru',
+ 'pluginOptions' => [
+ 'showPreview' => true,
+ 'showUpload' => false,
+ 'showCancel' => false,
+ 'mainClass' => 'input-group-lg',
+ 'initialPreview' => [], // Задайте начальный список для предварительного просмотра (если есть)
+ 'maxFileSize' => 2800, // Максимальный размер файла (в килобайтах)
+ 'dropZoneTitle' => 'Выберите файл', // Текст на зоне для перетаскивания
+ 'browseOnZoneClick' => true, // Разрешить клик по зоне перетаскивания
+ 'fileActionSettings' => [
+ 'showZoom' => false, // Убираем иконку для увеличения
+ ],
+ ],
+ ])->label(false) ?>
+ </div>
+ <div class="row">
+ <div class="col-md-6 w-100 w-md-75 w-lg-50">
+ <div class="row mb-2"><?= Html::label("Презентация", null, ['class' => 'text-center font-weight-bold pt-5 h5']) ?></div>
+ <?= $form->field($model, 'photo_id[]')->widget(FileInput::class, [
+ 'options' => [
+ 'id' => 'video-file-upload',
+ 'multiple' => false, // Поддержка выбора нескольких файлов
+ ],
+ 'language' => 'ru',
+ 'pluginOptions' => [
+ 'showPreview' => true,
+ 'showUpload' => false,
+ 'showCancel' => false,
+ 'mainClass' => 'input-group-lg',
+ 'initialPreview' => [], // Задайте начальный список для предварительного просмотра (если есть)
+ 'maxFileSize' => 2800, // Максимальный размер файла (в килобайтах)
+ 'dropZoneTitle' => 'Выберите файл', // Текст на зоне для перетаскивания
+ 'browseOnZoneClick' => true, // Разрешить клик по зоне перетаскивания
+ 'fileActionSettings' => [
+ 'showZoom' => false, // Убираем иконку для увеличения
+ ],
+ ],
+ ])->label(false) ?>
+ </div>
+ <div class="col-md-6 w-100 w-md-75 w-lg-50">
+ <div class="row mb-2"><?= Html::label("Процесс сборки", null, ['class' => 'text-center font-weight-bold pt-5 h5']) ?></div>
+ <?= $form->field($model, 'photo_id[]')->widget(FileInput::class, [
+ 'options' => [
+ 'id' => 'presentation-file-upload',
+ 'multiple' => false, // Поддержка выбора нескольких файлов
+ ],
+ 'language' => 'ru',
+ 'pluginOptions' => [
+ 'showPreview' => true,
+ 'showUpload' => false,
+ 'showCancel' => false,
+ 'mainClass' => 'input-group-lg',
+ 'initialPreview' => [], // Задайте начальный список для предварительного просмотра (если есть)
+ 'maxFileSize' => 2800, // Максимальный размер файла (в килобайтах)
+ 'dropZoneTitle' => 'Выберите файл', // Текст на зоне для перетаскивания
+ 'browseOnZoneClick' => true, // Разрешить клик по зоне перетаскивания
+ 'fileActionSettings' => [
+ 'showZoom' => false, // Убираем иконку для увеличения
+ ],
+ ],
+ ])->label(false) ?>
+ </div>
+ </div>
- <?php
- // Использование виджета
- echo FileUploadWidget::widget([
- 'containerId' => 'file-upload-widget', // Можно указать свой id
- 'inputId' => 'file-upload', // Можно указать свой id для input
- ]);
- ?>
</div>
-
-
<div class="col-md-3">
- инпут поля
+ <div class="row mb-2"><?= Html::label("Прогноз продаж", null, ['class' => 'text-center font-weight-bold pt-5 h5']) ?></div>
+ <div class="row">
+ <div class="col-md-5">
+ <div class="col-md-3"><?= Html::label("Год", null, ['class' => 'font-weight-bold pt-3 h6']) ?></div>
+ <div class="col-md-9"> <?= Html::dropDownList("year", null, [2024 => 2024, 2025 => 2025], ['class' => 'form-control']) ?></div>
+ </div>
+ <div class="col-md-7">
+ <div class="col-md-3"><?= Html::label("Месяц", null, ['class' => 'font-weight-bold pt-3 h6']) ?></div>
+ <div class="col-md-9"> <?= Html::dropDownList("month", null, \yii_app\helpers\DateHelper::MONTH_NUMBER_NAMES, ['class' => 'form-control']) ?></div>
+ </div>
+ </div>
+ <div class="row">
+ <?= Html::label("Оффлайн магазины", null, ['class' => 'text-center font-weight-bold pt-4 h6']) ?>
+ </div>
+ <div class="row">
+ <div class="container border p-3" style="max-height: 200px; background-color: white; overflow: auto;">
+ <div class="row align-items-center mb-2">
+ <div class="col-md-8">
+ <label class="col-form-label">Поле 1:</label>
+ </div>
+ <div class="col-md-4">
+ <input type="number" class="form-control" placeholder="Введите значение">
+ </div>
+ </div>
+ </div>
+ </div>
+ <div class="row">
+ <?= Html::label("Интернет магазины", null, ['class' => 'text-center font-weight-bold pt-3 h6']) ?>
+ </div>
+ <div class="row">
+ <div class="container border p-3" style="max-height: 200px;background-color: white; overflow: auto;">
+ <div class="row align-items-center mb-2">
+ <?php foreach ($storesList as $store) {
+ echo '<div class="col-md-8">
+ <label class="col-form-label">'.$store.':</label>
+ </div>
+ <div class="col-md-4">
+ <input type="number" class="form-control" placeholder="Введите значение">
+ </div>';
+ } ?>
+ </div>
+ </div>
+ </div>
+ <div class="row">
+ <?= Html::label("Маркетплейсы", null, ['class' => 'text-center font-weight-bold pt-3 h6']) ?>
+ </div>
+ <div class="row">
+ <div class="container border p-3" style="max-height: 200px; background-color: white; overflow: auto;">
+ <div class="row align-items-center mb-2">
+ <?php foreach ($storesList as $store) {
+ echo '<div class="col-md-8">
+ <label class="col-form-label">'.$store.':</label>
+ </div>
+ <div class="col-md-4">
+ <input type="number" class="form-control" placeholder="Введите значение">
+ </div>';
+ } ?>
+ </div>
+ </div>
+ </div>
+ </div>
+ </div>
+ <div class="row">
+ <div class="col-md-10"></div>
+ <div class="col-md-2">
+ <?= Html::submitButton('Сохранить', ['class' => 'btn btn-success w-100']) ?>
</div>
- <!-- <div class="col-md-8">-->
- <!-- <div class="row">-->
- <!-- <div class="col-md-4">-->
- <!-- <div class="row">-->
- <!-- --><?php //= Html::label('Фото', null, ['class' => 'h4']) ?>
- <!-- --><?php //= FileInput::widget([
- // 'name' => 'attachment_4',
- // 'disabled' => true
- // ]); ?>
- <!-- </div>-->
- <!-- <div class="row">-->
- <!-- --><?php //= Html::label('Видео', null, ['class' => 'h4']) ?>
- <!-- --><?php //= FileInput::widget([
- // 'name' => 'attachment_4',
- // 'disabled' => true
- // ]); ?>
- <!-- </div>-->
- <!-- </div>-->
- <!--<!-- <div class="col-md-7">-->-->
- <!--<!-- <div class="row border-bottom">-->-->
- <!--<!-- <div class="col-md-5">-->-->
- <!--<!-- -->--><?php ////= Html::label('Тип матрицы', null, ['class' => 'h4']) ?>
- <!--<!-- <br>-->-->
- <!--<!-- <a href="-->-->
- <?php ////= Url::to('/matrix-type') ?><!--<!--" class="text-decoration-none" target="_blank">Редактировать</a>-->
- -->
- <!--<!-- </div>-->-->
- <!--<!-- <div class="col-md-7 pt-2 mb-2">-->-->
- <!--<!-- -->
- --><?php ////= Html::dropDownList('matrix_type_id', null, ArrayHelper::map(MatrixType::find()->all(), 'id', 'name'), ['class' => 'form-control', 'prompt' => 'Тип матрицы']) ?>
- <!--<!-- </div>-->-->
- <!--<!-- </div>-->-->
- <!--<!-- <div class="row">-->-->
- <!--<!-- -->
- --><?php ////= Html::label('Прогноз продаж (мес.)', null, ['class' => 'h5 text-center pt-5']) ?>
- <!--<!-- </div>-->-->
- <!--<!-- <div class="row pt-2">-->-->
- <!--<!-- <div class="col-md-4">-->-->
- <!--<!-- -->--><?php ////= Html::label('Маркетплейсы', null, ['class' => 'h5 pt-2']) ?>
- <!--<!-- </div>-->-->
- <!--<!-- <div class="col-md-8">-->-->
- <!--<!-- -->
- --><?php ////= Html::input('number', 'marketplace', null, ['class' => 'form-control']) ?>
- <!--<!-- </div>-->-->
- <!--<!-- </div>-->-->
- <!--<!-- <div class="row pt-2">-->-->
- <!--<!-- <div class="col-md-4">-->-->
- <!--<!-- -->
- --><?php ////= Html::label('Интернет магазин', null, ['class' => 'h5 pt-2']) ?>
- <!--<!-- </div>-->-->
- <!--<!-- <div class="col-md-8">-->-->
- <!--<!-- -->
- --><?php ////= Html::input('number', 'online_stores', null, ['class' => 'form-control']) ?>
- <!--<!-- </div>-->-->
- <!--<!-- </div>-->-->
- <!--<!-- <div class="row">-->-->
- <!--<!-- -->
- --><?php ////= Html::label('Оффлайн магазины', null, ['class' => 'h5 text-center pt-5']) ?>
- <!--<!-- </div>-->-->
- <!--<!-- <div class="row">-->-->
- <!--<!-- -->
- --><?php ////foreach (\yii_app\records\StoreType::find()->all() as $number => $store) { ?>
- <!--<!-- <div class="col-md-3 pt-1 d-flex align-items-center">-->-->
- <!--<!-- <span class="offline-stores me-3">-->-->
- <?php ////= Html::encode($store->name) ?><!--<!--</span>--> -->
- <!--<!-- </div>-->-->
- <!--<!-- <div class="col-md-9 pt-1 d-flex align-items-center">-->-->
- <!--<!-- -->
- --><?php ////= Html::input('number', "offline-store-$store->id", null, ['class' => 'form-control']) ?>
- <!--<!-- </div>-->-->
- <!--<!-- -->--><?php ////} ?>
- <!--<!-- </div>-->-->
- <!--<!-- </div>-->-->
- <!-- </div>-->
- <!-- </div>-->
</div>
+ <?php ActiveForm::end(); ?>
</div>