mirocow\eav\EavModel::create PHP Méthode

create() public static méthode

Constructor for creating form model from entity object
public static create ( array $params ) : static
$params array
Résultat 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'];
        }
        foreach ($model->entityModel->getEavAttributes()->andWhere($params)->all() as $attribute) {
            $handler = AttributeHandler::load($model, $attribute);
            $attribute_name = $handler->getAttributeName();
            //
            // Add rules
            //
            if ($attribute->eavType->storeType == ValueHandler::STORE_TYPE_RAW) {
                $model->addRule($attribute_name, 'default', ['value' => $attribute->defaultValue]);
            }
            if ($attribute->eavType->storeType == ValueHandler::STORE_TYPE_OPTION) {
                $model->addRule($attribute_name, 'default', ['value' => $attribute->defaultOptionId]);
            }
            if ($attribute->eavType->storeType == ValueHandler::STORE_TYPE_ARRAY) {
                $model->addRule($attribute_name, 'string');
            }
            if ($attribute->required) {
                $model->addRule($attribute_name, 'required');
            } else {
                $model->addRule($attribute_name, 'safe');
            }
            //
            // Load attribute value
            //
            $value = $handler->valueHandler->load();
            if (!$value) {
                // Set default attribute
                $value = $handler->valueHandler->defaultValue();
            }
            $model->defineAttribute($attribute_name, $value);
            //
            // Add widget handler
            //
            $model->handlers[$attribute_name] = $handler;
        }
        //
        // Set POST data
        //
        if (Yii::$app->request->isPost && Yii::$app->request->getIsConsoleRequest() == false) {
            $modelName = self::getModelShortName($model->entityModel);
            $post = Yii::$app->request->post($modelName);
            $model->load($post, 'EavModel');
        }
        return $model;
    }

Usage Example

Exemple #1
0
 /**
  * @return EavModel
  */
 public function __get($name = '')
 {
     /*if (!$this->EavModel instanceof EavModel) {
     
             }*/
     $this->EavModel = EavModel::create(['entityModel' => $this->owner, 'valueClass' => $this->valueClass, 'attribute' => $name]);
     return $this->EavModel;
 }
All Usage Examples Of mirocow\eav\EavModel::create