Categories
Categories, (*1)
The preferred way to install this extension is through composer., (*2)
Either run, (*3)
php composer.phar require --prefer-dist jakharbek/yii2-categories "*"
or add, (*4)
"jakharbek/yii2-categories": "*"
to the require section of your composer.json
file., (*5)
Once the extension is installed, simply use it in your code by :, (*6)
You need to connect a controller or an action to the controller, (*7)
controller, (*8)
'controllerMap' => [ 'categories' => 'jakharbek\categories\controllers\CategoriesController' ],
action, (*9)
public function actions() { return [ 'categories' => [ 'class' => 'jakharbek\categories\actions\CategoriesAction' ] ]; }
You must have an extension, (*10)
jakharbek/yii2-langs
You need to connect i18n for translations, (*11)
'jakhar-categories' => [ 'class' => 'yii\i18n\PhpMessageSource', 'basePath' => '@vendor/jakharbek/yii2-categories/src/messages', 'sourceLanguage' => 'en', 'fileMap' => [ 'jakhar-categories' => 'main.php', ], ],
and migrate the database, (*12)
yii migrate --migrationPath=@vendor/jakharbek/yii2-categories/src/migrations
example with Posts elements, (*13)
You must connect behavior to your database model (Active Record), (*14)
'category_model'=> [ 'class' => CategoryModelBehavior::className(), 'attribute' => 'categoriesform', 'separator' => ',', ],
example, (*15)
use jakharbek\categories\behaviors\CategoryModelBehavior; class Posts extends ActiveRecord { private $_categoriesform; public function behaviors() { ... 'category_model'=> [ 'class' => CategoryModelBehavior::className(), 'attribute' => 'categoriesform', 'separator' => ',', ], ... } ... public function getCategoriesform(){ return $this->_categoriesform; } public function setCategoriesform($value){ return $this->_categoriesform = $value; } }
Afterwards you need to add your widget form., (*16)
jakharbek\categories\widgets\CategoriesWidget::widget
example, (*17)
echo jakharbek\categories\widgets\CategoriesWidget::widget([ 'selected' => $model->categoriesSelected(), 'model_db' => $model,'name' => 'Posts[categoriesform]' ]);
and of course do not forget to prescribe links for your model, (*18)
public function getPostscategories() { return $this->hasMany(Postscategories::className(), ['post_id' => 'post_id']); } public function getCategories() { return $this->hasMany(Categories::className(), ['id' => 'id'])->viaTable('postscategories', ['post_id' => 'post_id']); }
It's all!, (*19)