Пример #1
0
 /**
  * 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;
 }