コード例 #1
0
 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];
 }
コード例 #2
0
ファイル: EavAttribute.php プロジェクト: yeesoft/yii2-yee-eav
 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;
 }