"repositories": [
{
"type": "vcs",
"url": "http://github.com/loveorigami/lo-module-eav.git"
}
],
"minimum-stability": "dev",
"require": {
"loveorigami/lo-module-eav": "*"
}
Update
$ php yii migrate/up --migrationPath=@vendor/loveorigami/lo-module-eav/migrations
Create
$ php yii migrate/create --migrationPath=@vendor/loveorigami/lo-module-eav/migrations "eav-tbl..."
- In your backend config file
'modules'=>[
'eav' => [
'class' => 'lo\modules\eav\Module',
],
],
- Models must implement EavCategories interface:
class SomeModel extends ActiveRecord implements yeesoft\eav\models\EavCategories
- Implement needed methods:
public function getEavCategories()
{
return Category::getCategories();
}
public static function getEavCategoryField()
{
return 'category_id';
}
- Add EAV behavior to model:
public function behaviors()
{
return [
'eav' => [
'class' => \lo\modules\eav\EavBehavior::className(),
]
];
}
- If model uses category to separate attributes then you should specify category ID when you create model:
$model = new SomeModel(['category_id' => 7]);
- Add EavQueryTrait to ModelQuery class:
use \lo\modules\eav\EavQueryTrait;
- Add filters to ModelSearch class:
$query->andEavFilterWhere('=', 'customtext', Yii::$app->getRequest()->get('customtext'));
- Add fields to form view:
echo $form->field($model, 'customtext')->textInput(['maxlength' => true]);
echo $form->field($model, 'customselect')->dropDownList($model->getEavAttribute('customselect')->getEavOptionsList());
- Add columns to GridView in index view:
GridView::widget([
'dataProvider' => $dataProvider,
'filterModel' => $searchModel,
'columns' => [
[
'value' => function (SomeModel $model) {
return (isset($model->input)) ? $model->input : '(not set)';
},
'filter' => Html::input('text', 'customtext', Yii::$app->getRequest()->get('customtext'), ['class' => 'form-control']),
],
])