public function actionGetAttributes() { Yii::$app->response->format = Response::FORMAT_JSON; if (!($modelId = Yii::$app->getRequest()->post('model_id'))) { return null; } $params['model_id'] = (int) $modelId; $category_id = Yii::$app->getRequest()->post('category_id'); $params['category_id'] = $category_id ? $category_id : null; $entity = EavEntity::findOne($params); if (!$entity) { try { $entity = new EavEntity($params); $entity->save(); } catch (Exception $exc) { return false; } } $querySelected = $entity->getEavAttributes()->orderBy('label')->limit(null); $queryAvailable = clone $querySelected; $selectedDataProvider = new ActiveDataProvider(['query' => $querySelected]); $ids = $queryAvailable->select('id')->all(); $ids = array_map(function ($item) { return $item->id; }, $ids); $ids = !empty($ids) ? implode(', ', $ids) : '0'; $availableDataProvider = new ActiveDataProvider(['query' => EavAttribute::find()->where("id NOT IN ({$ids})")->limit(null)]); $selected = $this->renderIsAjax('attributes', ['dataProvider' => $selectedDataProvider]); $available = $this->renderIsAjax('attributes', ['dataProvider' => $availableDataProvider]); return ['available' => $available, 'selected' => $selected]; }
public function setValue($entityModel, $catgoryId, $itemId, $value) { if (!isset($this->_value) || !$this->_value) { $this->_value = $this->loadValue($entityModel, $catgoryId, $itemId); } if (!$this->_value) { if (!($eavModel = EavEntityModel::findOne(['entity_model' => $entityModel]))) { throw new InvalidParamException(Yii::t('yee/eav', 'Model was not found.')); } if (!($eavEntity = EavEntity::findOne(['model_id' => $eavModel->id, 'category_id' => $catgoryId]))) { throw new InvalidParamException(Yii::t('yee/eav', 'Entity was not found.')); } $eavValue = new EavValue(['entity_id' => $eavEntity->id, 'attribute_id' => $this->getPrimaryKey(), 'item_id' => $itemId, 'value' => $value]); if (!$eavValue->save()) { throw new \yii\db\Exception(Yii::t('yee/eav', 'An error occurred during creation of EavValue record.')); } $this->_value = $eavValue; } $this->_value->value = $value; }