[ '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', ], 'required', ], [ [ 'description', ], 'string', ], [ [ 'is_filter', 'display', 'is_menu', ], 'boolean', ], [ [ 'level', 'sort', ], 'integer', ], [ [ 'alias', ], 'string', 'max' => 50, ], [ [ 'name' ], 'string', 'max' => 255, ], [ [ 'categories' ], 'safe', ], ]; } /** * @inheritdoc */ public function attributeLabels() { return [ 'tax_group_id' => 'Tax Group ID', 'alias' => 'Alias', 'name' => 'Name', 'description' => 'Description', 'is_filter' => 'Use in filter', 'sort' => 'Sort', 'display' => 'Display', 'is_menu' => 'Отображать в меню', ]; } public function getCategories() { return $this->hasMany(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 = []; if(!empty($this->categories)) { $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'); } }