[ 'class' => 'common\behaviors\Slug', 'in_attribute' => 'name', 'out_attribute' => 'alias', 'translit' => true, ], ]; } /** * @inheritdoc */ public static function tableName() { return 'tax_group'; } /** * @inheritdoc */ public function rules() { return [ [ [ 'name', 'module', ], 'required', ], [ [ 'description', 'settings', ], 'string', ], [ [ 'hierarchical', 'is_filter', 'display', 'is_menu', 'use_in_name', ], 'boolean', ], [ [ 'level', 'sort', ], 'integer', ], [ [ 'alias', 'module', ], 'string', 'max' => 50, ], [ [ 'name' ], 'string', 'max' => 255, ], [ [ 'categories' ], 'safe', ], [ [ 'use_in_name' ], 'default', 'value' => false, ], ]; } /** * @inheritdoc */ public function attributeLabels() { return [ 'tax_group_id' => 'Tax Group ID', 'alias' => 'Alias', 'name' => 'Name', 'description' => 'Description', 'module' => 'Module', 'hierarchical' => 'Hierarchical', // 'settings' => 'Settings', 'is_filter' => 'Use in filter', 'sort' => 'Sort', 'display' => 'Display', 'is_menu' => 'Отображать в меню', 'use_in_name' => 'Использовать в названии', ]; } /** * @return \yii\db\ActiveQuery */ public function getTaxGroupToGroups() { return $this->hasMany(TaxGroupToGroup::className(), [ 'tax_group1_id' => 'tax_group_id' ]) ->inverseOf('taxGroup1'); } public function getCategories() { return $this->hasMany(Category::className(), [ 'category_id' => 'category_id' ]) ->viaTable('tax_group_to_category', [ 'tax_group_id' => 'tax_group_id' ]); } /** * @return ActiveQuery */ public function getCategory() { return $this->hasOne(Category::className(), [ 'category_id' => 'category_id' ]) ->viaTable('tax_group_to_category', [ 'tax_group_id' => 'tax_group_id' ]); } public function setCategories($values) { $this->categories = $values; } public function afterSave($insert, $changedAttributes) { $this->unlinkAll('categories', true); $categories = Category::findAll($this->categories); foreach ($categories as $category) { $this->link('categories', $category); } } /** * @return \yii\db\ActiveQuery */ public function getOptions() { return $this->getTaxOptions(); } public function getTaxOptions() { return $this->hasMany(TaxOption::className(), [ 'tax_group_id' => 'tax_group_id' ]) ->inverseOf('taxGroup'); } /** * @return \yii\db\ActiveQuery */ public function getTaxOptionToGroups() { return $this->hasMany(TaxOptionToGroup::className(), [ 'tax_group_id' => 'tax_group_id' ]) ->inverseOf('taxGroup'); } public function getValueModelName($full_path = true) { $valueClass = 'TaxValue' . ucfirst($this->module); $fullClass = '\common\modules\rubrication\models\\' . $valueClass; return class_exists($fullClass) ? $full_path ? $fullClass : $valueClass : false; } }