Wallogit.com
2017 © Pedro Peláez
Topics
Topics, (*1)
The preferred way to install this extension is through composer., (*2)
Either run, (*3)
php composer.phar require --prefer-dist jakharbek/yii2-topics "*"
or add, (*4)
"jakharbek/yii2-topics": "*"
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' => [ 'topics' => 'jakharbek\topics\controllers\TopicsController' ],
action, (*9)
public function actions() { return [ 'topics' => [ 'class' => 'jakharbek\topics\actions\TopicsAction' ] ]; }
You must have an extension, (*10)
jakharbek/yii2-langs
You need to connect i18n for translations, (*11)
'jakhar-topics' => [
'class' => 'yii\i18n\PhpMessageSource',
'basePath' => '@vendor/jakharbek/yii2-topics/src/messages',
'sourceLanguage' => 'en',
'fileMap' => [
'jakhar-topics' => 'main.php',
],
],
and migrate the database, (*12)
yii migrate --migrationPath=@vendor/jakharbek/yii2-topics/src/migrations
example with Posts elements, (*13)
You must connect behavior to your database model (Active Record), (*14)
'topic_model'=> [
'class' => TopicModelBehavior::className(),
'attribute' => 'Topicsform',
'separator' => ',',
],
example, (*15)
use jakharbek\topics\behaviors\TopicModelBehavior;
class Posts extends ActiveRecord
{
private $_topicsform;
public function behaviors()
{
...
'topic_model'=> [
'class' => TopicModelBehavior::className(),
'attribute' => 'topicsform',
'separator' => ',',
],
...
}
...
public function getTopicsform(){
return $this->_topicsform;
}
public function setTopicsform($value){
return $this->_topicsform = $value;
}
}
Afterwards you need to add your widget form., (*16)
jakharbek\topics\widgets\TopicsWidget::widget
example, (*17)
echo jakharbek\topics\widgets\TopicsWidget::widget([ 'selected' => $model->topicsSelected(), 'model_db' => $model,'name' => 'Posts[topicsform]' ]);
and of course do not forget to prescribe links for your model, (*18)
public function getPoststopics()
{
return $this->hasMany(Poststopics::className(), ['post_id' => 'post_id']);
}
public function getTopics()
{
return $this->hasMany(Topics::className(), ['id' => 'id'])->viaTable('poststopics', ['post_id' => 'post_id']);
}
It's all!, (*19)