コード例 #1
0
ファイル: DynamicModel.php プロジェクト: sunfun/yii2-eav
 /**
  * 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);
     foreach ($model->entityModel->getRelation('eavAttributes')->all() as $attribute) {
         $handler = AttributeHandler::load($model, $attribute);
         $key = $handler->getAttributeName();
         $model->defineAttribute($key, $handler->valueHandler->load());
         $model->defineAttributeLabel($key, $attribute->getAttribute('name'));
         if ($attribute->required) {
             $model->addRule($key, 'required');
         }
         if ($attribute->type->storeType == ValueHandler::STORE_TYPE_RAW) {
             $model->addRule($key, 'default', ['value' => $attribute->defaultValue]);
         }
         if ($attribute->type->storeType == ValueHandler::STORE_TYPE_OPTION) {
             $model->addRule($key, 'default', ['value' => $attribute->defaultOptionId]);
         }
         $model->handlers[$key] = $handler;
     }
     return $model;
 }