/** * Constructor for creating form model from entity object * * @param array $params * @return static */ public static function create($params) { $params['class'] = static::className(); /** @var static $model */ $model = Yii::createObject($params); $params = []; if (!empty($params['attribute'])) { $params = ['name' => $params['attribute']]; } $attributes = $model->entityModel->getRelation('eavAttributes')->where($params)->all(); foreach ($attributes as $attribute) { $handler = AttributeHandler::load($model, $attribute); $key = $handler->getAttributeName(); $value = $handler->valueHandler->load(); $model->setLabel($key, $handler->getAttributeLabel()); // // Add rules // if ($attribute->required) { $model->addRule($key, 'required'); } else { $model->addRule($key, 'safe'); } if ($attribute->eavType->storeType == ValueHandler::STORE_TYPE_RAW) { $model->addRule($key, 'default', ['value' => $attribute->defaultValue]); } if ($attribute->eavType->storeType == ValueHandler::STORE_TYPE_OPTION) { $model->addRule($key, 'default', ['value' => $attribute->defaultOptionId]); } if ($attribute->eavType->storeType == ValueHandler::STORE_TYPE_ARRAY) { $model->addRule($key, 'string'); } // // Add define attribute // $model->defineAttribute($key, $value); // // Add hanler // $model->handlers[$key] = $handler; } if (Yii::$app->request->isPost && Yii::$app->request->getIsConsoleRequest() == false) { $modelName = substr(strrchr(self::className(), "\\"), 1); $model->load(Yii::$app->request->post(), $modelName); } return $model; }