From f33dbdd61d4f1aec09ed0dc0335c24273c2e5924 Mon Sep 17 00:00:00 2001 From: Alexander Smirnov Date: Sat, 2 Nov 2024 11:49:03 +0300 Subject: [PATCH] =?utf8?q?[ERP-231]=20=D0=B4=D0=BE=D0=B1=D0=B0=D0=B2=D0=BB?= =?utf8?q?=D0=B5=D0=BD=D0=B0=20=D0=B2=D0=BE=D0=B7=D0=BC=D0=BE=D0=B6=D0=BD?= =?utf8?q?=D0=BE=D1=81=D1=82=D1=8C=20=D1=80=D0=B5=D0=B4=D0=B0=D0=BA=D1=82?= =?utf8?q?=D0=B8=D1=80=D0=BE=D0=B2=D0=B0=D1=82=D1=8C=20json=20=D0=B4=D0=BE?= =?utf8?q?=D0=BF.=20=D0=BF=D0=B0=D1=80=D0=B0=D0=BC=D0=B5=D1=82=D1=80=D0=BE?= =?utf8?q?=D0=B2?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit --- erp24/controllers/MatrixErpController.php | 4 ++ .../MatrixErpPropertyController.php | 10 ++++- ...d_columns_to_table_matrix_erp_property.php | 8 ++-- erp24/records/MatrixErpProperty.php | 9 +++-- erp24/views/matrix_erp/view.php | 16 ++++++++ erp24/views/matrix_erp_property/_form.php | 37 +++++++++++++++++++ 6 files changed, 74 insertions(+), 10 deletions(-) diff --git a/erp24/controllers/MatrixErpController.php b/erp24/controllers/MatrixErpController.php index 9b650013..2648c7f6 100644 --- a/erp24/controllers/MatrixErpController.php +++ b/erp24/controllers/MatrixErpController.php @@ -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([ diff --git a/erp24/controllers/MatrixErpPropertyController.php b/erp24/controllers/MatrixErpPropertyController.php index fce3f4f4..b1d3e644 100644 --- a/erp24/controllers/MatrixErpPropertyController.php +++ b/erp24/controllers/MatrixErpPropertyController.php @@ -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(); diff --git a/erp24/migrations/m241031_123240_add_columns_to_table_matrix_erp_property.php b/erp24/migrations/m241031_123240_add_columns_to_table_matrix_erp_property.php index a499fdda..a22cb89d 100755 --- a/erp24/migrations/m241031_123240_add_columns_to_table_matrix_erp_property.php +++ b/erp24/migrations/m241031_123240_add_columns_to_table_matrix_erp_property.php @@ -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'); diff --git a/erp24/records/MatrixErpProperty.php b/erp24/records/MatrixErpProperty.php index 9f290134..9f792967 100644 --- a/erp24/records/MatrixErpProperty.php +++ b/erp24/records/MatrixErpProperty.php @@ -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' ]; } diff --git a/erp24/views/matrix_erp/view.php b/erp24/views/matrix_erp/view.php index c9d0ea55..b01a27c7 100644 --- a/erp24/views/matrix_erp/view.php +++ b/erp24/views/matrix_erp/view.php @@ -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 .= '' . $prop['name'] . '' . $prop['value'] . '' . $prop['valueId'] . '' . $prop['parameterId'] . ''; + } + return '' . $res . '
НазваниеЗначениеЗначениеIdПараметрId
'; + } catch (\Exception $ex) { + return 'неверный формат json'; + } + } + ], [ 'attribute' => 'url_link_video', 'format' => 'raw', diff --git a/erp24/views/matrix_erp_property/_form.php b/erp24/views/matrix_erp_property/_form.php index 8c6c2c33..17fc70a7 100644 --- a/erp24/views/matrix_erp_property/_form.php +++ b/erp24/views/matrix_erp_property/_form.php @@ -69,6 +69,43 @@ $this->registerJs( field($modelMatrixErpProperty, 'flowwow_subcategory')->dropDownList([]) ?> +
+ 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);?> +
+
field($modelMatrixErpProperty, 'mediaFiles')->widget(MultipleInput::className(), [ 'min' => 0, -- 2.39.5