yeesoft / yii2-yee-eav
EAV Module For Yee CMS
This package's canonical repository appears to be gone and the package has been frozen as a result.
0.1.0
2017-03-01 11:36 UTC
Requires
- yeesoft/yii2-yee-core: ~0.1.0
This package is auto-updated.
Last update: 2022-03-29 00:34:57 UTC
README
Yii2 Framework - Yee CMS - EAV Module
Module for creating custom fields
This module is part of Yee CMS. This module allows you to create and manage custom fields for models.
Installation
- Either run
composer require --prefer-dist yeesoft/yii2-yee-eav "~0.1.0"
or add
"yeesoft/yii2-yee-eav": "~0.1.0"
to the require section of your composer.json
file.
- Run migrations:
yii migrate --migrationPath=@vendor/yeesoft/yii2-yee-eav/migrations/
Configuration
- In your backend config file
'modules'=>[ 'eav' => [ 'class' => 'yeesoft\eav\EavModule', ], ],
Usage of 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' => \yeesoft\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 yeesoft\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']), ], ])