mazurva/yii2-eav

为Yii2的EAV

v0.5.0 2015-09-23 19:21 UTC

This package is auto-updated.

Last update: 2024-08-29 04:25:24 UTC


README

Build Status

安装

安装此扩展的首选方式是通过composer

运行以下命令之一:

php composer.phar require --prefer-dist mazurva/yii2-eav "dev-master"

或者在您的composer.json文件的require部分添加以下内容:

"mazurva/yii2-eav": "dev-master"

php yii migrate/up --migrationPath=@vendor/mazurva/yii2-eav/src/migrations

使用方法

附加到您的模型

  use EavTrait; // need for full support label of fields

  public function behaviors()
  {
      return [
          'eav' => [
              'class' => mazurva\eav\EavBehavior::className(),
              'valueClass' => mazurva\eav\models\EavAttributeValue::className(), // this model for table object_attribute_value
          ]
      ];
  }
  
  /**
   * @return \yii\db\ActiveQuery
   */
  public function getEavAttributes()
  {
      return $this->hasMany(mazurva\eav\models\EavAttribute::className(), ['categoryId' => 'id']);
  }

视图中的示例使用

<?=$form->field($model,'eav2'); ?>

foreach($model->eavAttributes as $attr){
    echo $form->field($model, $attr->name)->textInput();
}

添加新字段

$attr = new mazurva\eav\models\EavAttribute();
$attr->attributes = [
        'categoryId' => 1, // Category ID
        'name' => 'AttrCategory1',  // service name field
        'label' => 'Attr1',         // label text for form
        'defaultValue' => 'attr1',  // default value
        'entityModel' => SampleModel::className(), // work model
        'required'=>false           // add rule "required field"
    ];
$attr->save();