public function init() { $this->name = "Управление значениями свойств"; $this->modelShowAttribute = "value"; $this->modelClassName = CmsContentPropertyEnum::className(); parent::init(); }
protected function _updateAdditionalProduct($product = [], ShopCmsContentElement $cmsContentElement) { if ($cmsContentElement->relatedPropertiesModel->hasAttribute('sku') && ArrayHelper::getValue($product, 'sku')) { $cmsContentElement->relatedPropertiesModel->setAttribute('sku', ArrayHelper::getValue($product, 'sku')); } if ($cmsContentElement->relatedPropertiesModel->hasAttribute('material') && ArrayHelper::getValue($product, 'material')) { $cmsContentElement->relatedPropertiesModel->setAttribute('material', ArrayHelper::getValue($product, 'material')); } if ($cmsContentElement->relatedPropertiesModel->hasAttribute('size') && ArrayHelper::getValue($product, 'razm')) { $cmsContentElement->relatedPropertiesModel->setAttribute('size', ArrayHelper::getValue($product, 'razm')); } if ($cmsContentElement->relatedPropertiesModel->hasAttribute('sizeBox') && ArrayHelper::getValue($product, 'razmer-upakovki')) { $cmsContentElement->relatedPropertiesModel->setAttribute('sizeBox', ArrayHelper::getValue($product, 'razmer-upakovki')); } if ($cmsContentElement->relatedPropertiesModel->hasAttribute('energy') && ArrayHelper::getValue($product, 'batareyki')) { $cmsContentElement->relatedPropertiesModel->setAttribute('energy', ArrayHelper::getValue($product, 'batareyki')); } if ($cmsContentElement->relatedPropertiesModel->hasAttribute('complect') && ArrayHelper::getValue($product, 'komplekt')) { $cmsContentElement->relatedPropertiesModel->setAttribute('complect', ArrayHelper::getValue($product, 'komplekt')); } if ($cmsContentElement->relatedPropertiesModel->hasAttribute('age') && ArrayHelper::getValue($product, 'vozrast')) { if ($property = $cmsContentElement->relatedPropertiesModel->getRelatedProperty('age')) { $age = ArrayHelper::getValue($product, 'vozrast'); if ($enum = $property->getEnums()->andWhere(['value' => $age])->one()) { } else { $enum = new CmsContentPropertyEnum(); $enum->value = (string) $age; $enum->property_id = $property->id; if ($enum->save()) { $this->stdout("\tadded age enum '{$age}' to DB\n", Console::FG_GREEN); } else { $error = Json::encode($enum->getFirstErrors()); $this->stdout("\tNot added age enum '{$age}' to DB: {$error}\n", Console::FG_RED); } } if ($enum && !$enum->isNewRecord) { $cmsContentElement->relatedPropertiesModel->setAttribute('age', $enum->id); } } } $cmsContentElement->relatedPropertiesModel->setAttribute('brand', '12764'); if ($cmsContentElement->relatedPropertiesModel->save()) { $this->stdout("\tSaved additionals\n", Console::FG_GREEN); } else { $error = Json::encode($cmsContentElement->relatedPropertiesModel->getFirstErrors()); $this->stdout("\tNot saved additionals: {$error}\n", Console::FG_RED); } }
/** * @return \yii\db\ActiveQuery */ public function getEnums() { return $this->hasMany(CmsContentPropertyEnum::className(), ['property_id' => 'id']); }