/** * Handle save tags event of the owner. */ public function saveTags() { /** @var Post $owner */ $owner = $this->owner; $post = Yii::$app->getRequest()->post('Post'); $tags = isset($post['tagValues']) ? $post['tagValues'] : null; if (is_array($tags)) { $owner->unlinkAll('tags', true); foreach ($tags as $tag) { if (!ctype_digit($tag) || !($linkTag = Tag::findOne($tag))) { $linkTag = new Tag(['title' => (string) $tag]); $linkTag->setScenario(Tag::SCENARIO_AUTOGENERATED); $linkTag->save(); } $owner->link('tags', $linkTag); } } }