mar / yii2-simple-eav
以简单方式为应用程序中的每个模型添加动态属性
v1.0.2
2016-04-13 10:36 UTC
Requires
- yiisoft/yii2: *
This package is not auto-updated.
Last update: 2024-09-23 12:37:24 UTC
README
注意!扩展尚未完成,需要一些更新和修复(例如,从eav表中删除已删除的eav字段,检查性能等)
Simple EAV
以简单方式为应用程序中的每个模型添加动态属性
安装
安装此扩展的最佳方式是通过composer。
运行以下命令之一:
php composer.phar require --prefer-dist mar/yii2-simple-eav "*"
或者将以下内容添加到您的composer.json
文件的require部分:
"mar/yii2-simple-eav": "*"
从扩展的迁移文件夹中执行迁移
使用
使用
扩展安装后,只需在代码中使用即可:
将行为、别名和验证规则添加到您的模型中,如下所示:(您可以使用任何别名,它将用于在数据库中识别您的 $model::className,如果您更改别名,旧属性值将消失=)
public function behaviors() {
return [ [ 'class' => \mar\eav\behaviors\EavBehavior::className(), 'modelAlias' => 'product', 'eavAttributesList' => [ 'eavProperty1' => [ 'rule' => [['eavProperty1'], 'string', 'max' => 255], 'type' => EavBehavior::ATTRIBUTE_TYPE_TEXT, ], 'eavProperty2' => [ 'rule' => [['eavProperty2'], 'integer'], 'type' => EavBehavior::ATTRIBUTE_TYPE_ARRAY, // mode MODE_SET_EMPTY_IF_NO_VALUE_IN_REQUEST - clear attribute value if no value like Classname[attributeName] in request, usefull for forms handling 'modes' => [ EavBehavior::MODE_SET_EMPTY_IF_NO_VALUE_IN_REQUEST ] ], ..... ] ] ];
}
如果您愿意,可以向模型的 attributeLabels() 方法添加 eav 属性的标签
3. 就这么多了,您可以像 $model->eavProperty1 这样访问新的属性,您还可以在表单中使用它
<?= $form->field($model, 'eavProperty1')->textInput(['maxlength' => true]) ?>
PS:1) 如果您从行为配置中删除属性,属性和值将被删除
可能未来的更新
1. search by eav fields
2. relations by eav fields
3. using category_id to bind eav attributes to class by category