]> gitweb.erp-flowers.ru Git - erp24_rep/yii-erp24/.git/commitdiff
[ERP-231] добавлена возможность редактировать json доп. параметров
authorAlexander Smirnov <fredeom@mail.ru>
Sat, 2 Nov 2024 08:49:03 +0000 (11:49 +0300)
committerAlexander Smirnov <fredeom@mail.ru>
Sat, 2 Nov 2024 08:49:03 +0000 (11:49 +0300)
erp24/controllers/MatrixErpController.php
erp24/controllers/MatrixErpPropertyController.php
erp24/migrations/m241031_123240_add_columns_to_table_matrix_erp_property.php
erp24/records/MatrixErpProperty.php
erp24/views/matrix_erp/view.php
erp24/views/matrix_erp_property/_form.php

index 9b650013b6e51fde0ba6455a9fed9c743969381b..2648c7f66ee09eea385e1a404afe6629b9c70568 100644 (file)
@@ -4,6 +4,7 @@ namespace app\controllers;
 
 use Yii;
 use yii\base\DynamicModel;
+use yii\helpers\Json;
 use yii_app\records\MatrixErp;
 use yii_app\records\MatrixErpMedia;
 use yii_app\records\MatrixErpProperty;
@@ -183,6 +184,9 @@ class MatrixErpController extends Controller
             $modelMatrixErpProperty = new MatrixErpProperty();
             $modelMatrixErpProperty->guid = $modelMatrixErp->guid;
             $modelMatrixErpProperty->save();
+        } else {
+            /* @var $modelMatrixErpProperty MatrixErpProperty */
+            $modelMatrixErpProperty->keyProperties = Json::decode($modelMatrixErpProperty->yandex_key_properties);
         }
 
         $filterModel = DynamicModel::validateData([
index fce3f4f4a28a77669c3d8ecf82a6f751b313b8be..b1d3e644d98f8b0adeaef9aee708f2f2159730e2 100644 (file)
@@ -4,6 +4,7 @@ namespace app\controllers;
 
 use Yii;
 use yii\helpers\ArrayHelper;
+use yii\helpers\Json;
 use yii\web\UploadedFile;
 use yii_app\forms\UploadImageForm;
 use yii_app\helpers\LoadFileHelper;
@@ -137,11 +138,14 @@ class MatrixErpPropertyController extends Controller
                     $modelEdit->save();
 
                     if (Yii::$app->request->isPost) {
-                        $uploadImage = UploadedFile::getInstanceByName('MatrixErpProperty[imageFile]');
+                        $postMatrixErpProperty = $this->request->post('MatrixErpProperty');
+
+                        $modelEdit->yandex_key_properties = Json::encode($postMatrixErpProperty['keyProperties'], JSON_UNESCAPED_UNICODE);
+                        $modelEdit->save();
 
                         $modelsMatrixErpMedia = MultipleModel::createMultipleModel(MatrixErpMedia::class,
                             'MatrixErpProperty', 'mediaFiles');
-                        $postMatrixErpProperty = $this->request->post('MatrixErpProperty');
+
                         $loadDataMatrixErpMedia = ArrayHelper::getValue($postMatrixErpProperty, 'mediaFiles');
                         if (!empty($loadDataMatrixErpMedia)) {
                             MultipleModel::loadMultipleFromArray($modelsMatrixErpMedia, $loadDataMatrixErpMedia , '',[]);
@@ -214,6 +218,8 @@ class MatrixErpPropertyController extends Controller
                             }
                         }
 
+                        $uploadImage = UploadedFile::getInstanceByName('MatrixErpProperty[imageFile]');
+
                         if ($uploadImage) {
                             if (Images::isImageFile(($uploadImage), ['png', 'jpg'])) {
                                 $image = new Images();
index a499fdda747d8bcac6e6807cb6cd7cb6fabaabf4..a22cb89d18252471e83a86a1f48c53b9c600eae4 100755 (executable)
@@ -25,9 +25,9 @@ class m241031_123240_add_columns_to_table_matrix_erp_property extends Migration
             ->after('flowwow_category')->comment('Точное название подкатегории в flowwow, будет ограничено селектом в интерфейсе'));
         $this->addColumn(self::TABLE_NAME, 'yandex_key_properties', $this->text()->null()
             ->after('flowwow_subcategory')->comment('изначально это будет пустой json шаблон c характеристиками, который нужно будет заполнить'));
-        $this->addColumn(self::TABLE_NAME, 'yandex_additional_properties', $this->text()->null()
-            ->after('yandex_key_properties')->comment('изначально это будет пустой json шаблон c дополнительными характеристиками,
-            который нужно будет заполнить, сюда же входят подробности о товаре'));
+//        $this->addColumn(self::TABLE_NAME, 'yandex_additional_properties', $this->text()->null()
+//            ->after('yandex_key_properties')->comment('изначально это будет пустой json шаблон c дополнительными характеристиками,
+//            который нужно будет заполнить, сюда же входят подробности о товаре'));
     }
 
     /**
@@ -35,7 +35,7 @@ class m241031_123240_add_columns_to_table_matrix_erp_property extends Migration
      */
     public function safeDown()
     {
-        $this->dropColumn(self::TABLE_NAME, 'yandex_additional_properties');
+//        $this->dropColumn(self::TABLE_NAME, 'yandex_additional_properties');
         $this->dropColumn(self::TABLE_NAME, 'yandex_key_properties');
         $this->dropColumn(self::TABLE_NAME, 'flowwow_subcategory');
         $this->dropColumn(self::TABLE_NAME, 'flowwow_category');
index 9f29013408fe7a46073ec3f5f4116e95c6a3fa92..9f792967e93b8ef4a304e2334b45f95c9c40b444 100644 (file)
@@ -23,13 +23,14 @@ use Yii;
  * @property string|null $flowwow_category Точное название категории в flowwow, будет ограничено селектом в интерфейсе
  * @property string|null $flowwow_subcategory Точное название подкатегории в flowwow, будет ограничено селектом в интерфейсе
  * @property string|null $yandex_key_properties изначально это будет пустой json шаблон c характеристиками, который нужно будет заполнить
- * @property string|null $yandex_additional_properties изначально это будет пустой json шаблон c дополнительными характеристиками,
+ * property string|null $yandex_additional_properties изначально это будет пустой json шаблон c дополнительными характеристиками,
  *                                                     который нужно будет заполнить, сюда же входят подробности о товаре
  *
  */
 class MatrixErpProperty extends \yii\db\ActiveRecord
 {
     public $imageFile;
+    public $keyProperties;
 
     /**
      * {@inheritdoc}
@@ -46,7 +47,7 @@ class MatrixErpProperty extends \yii\db\ActiveRecord
     {
         return [
             [['guid', 'date'], 'required'],
-            [['description', 'yandex_key_properties', 'yandex_additional_properties'], 'string'],
+            [['description', 'yandex_key_properties'/*, 'yandex_additional_properties'*/], 'string'],
             [['image_id', 'created_admin_id', 'updated_admin_id'], 'integer'],
             [
                 [
@@ -55,7 +56,7 @@ class MatrixErpProperty extends \yii\db\ActiveRecord
                 'file', 'skipOnEmpty' => true, 'extensions' => 'png, jpg', 'checkExtensionByMimeType' => false
             ],
             [['mediaFile', 'id', 'display_name', 'external_image_url', 'product_url', 'flowwow_category', 'flowwow_subcategory',
-                'yandex_key_properties', 'yandex_additional_properties'], 'safe'],
+                'yandex_key_properties'/*, 'yandex_additional_properties'*/], 'safe'],
             [['guid', 'date', 'created_at', 'updated_at', 'display_name', 'external_image_url', 'product_url', 'flowwow_category', 'flowwow_subcategory'], 'string', 'max' => 100],
             [['url_link_video'], 'string', 'max' => 255],
         ];
@@ -83,7 +84,7 @@ class MatrixErpProperty extends \yii\db\ActiveRecord
             'flowwow_category' => 'Категория в flowwow',
             'flowwow_subcategory' => 'Подкатегория в flowwow',
             'yandex_key_properties' => 'Ключевые свойства на yandex marketplace',
-            'yandex_additional_properties' => 'Дополнительные свойства на yandex marketplace'
+            //'yandex_additional_properties' => 'Дополнительные свойства на yandex marketplace'
         ];
     }
 
index c9d0ea55c7f84bc6cbb3121a9e361c3c771ee087..b01a27c7f2efe974928e02c07738b4b5627356df 100644 (file)
@@ -88,6 +88,22 @@ $this->params['breadcrumbs'][] = $this->title;
 //            'updated_at',
 //            'image_id',
 'display_name', 'external_image_url', 'product_url', 'flowwow_category', 'flowwow_subcategory',
+            [
+                'attribute' => 'yandex_key_properties',
+                'format' => 'raw',
+                'value' => function ($model) {
+                    try {
+                        $keyProperties = \yii\helpers\Json::decode($model->yandex_key_properties);
+                        $res = '';
+                        foreach ($keyProperties as $prop) {
+                            $res .= '<tr><td>' . $prop['name'] . '</td><td>' . $prop['value'] . '</td><td>' . $prop['valueId'] . '</td><td>' . $prop['parameterId'] . '</td></tr>';
+                        }
+                        return '<table><thead><tr><th>Название</th><th>Значение</th><th>ЗначениеId</th><th>ПараметрId</th></tr></thead><tbody>' . $res . '</tbody></table>';
+                    } catch (\Exception $ex) {
+                        return '<span style="color: red">неверный формат json</span>';
+                    }
+                }
+            ],
             [
                 'attribute' => 'url_link_video',
                 'format' => 'raw',
index 8c6c2c33e3e0656b091a3deb2f6cabba68b1a7a3..17fc70a7cb1f30e983564cb397b1b71ff34f38d5 100644 (file)
@@ -69,6 +69,43 @@ $this->registerJs(
 
     <?= $form->field($modelMatrixErpProperty, 'flowwow_subcategory')->dropDownList([]) ?>
 
+    <div class="form-group">
+        <?= $form->field($modelMatrixErpProperty, 'keyProperties')->widget(MultipleInput::class, [
+            'min' => 0,
+            'max' => 100,
+            'columns' => [
+                [
+                    'name'  => 'name',
+                    'type'  => 'textInput',
+                    'title' => 'Название',
+
+                ],
+                [
+                    'name'  => 'value',
+                    'type'  => 'textInput',
+                    'title' => 'Значение',
+                ],
+                [
+                    'name'  => 'valueId',
+                    'type'  => 'textInput',
+                    'title' => 'ЗначениеID',
+                ],
+                [
+                    'name'  => 'parameterId',
+                    'type'  => 'textInput',
+                    'title' => 'parameterId',
+                ],
+            ],
+            'addButtonPosition' => MultipleInput::POS_FOOTER,
+            'addButtonOptions' => [
+                'class' => 'btn btn-success visible-md',
+                'style' => 'display:block; width: 250px;',
+
+            ],
+            'iconSource'=> 'fa',
+        ])->label(false);?>
+    </div>
+
     <div class="form-group">
         <?= $form->field($modelMatrixErpProperty, 'mediaFiles')->widget(MultipleInput::className(), [
             'min' => 0,