public function actionDeepPageCopy() { $navId = Yii::$app->request->getBodyParam('navId'); if (empty($navId)) { throw new InvalidCallException("navId can not be empty."); } $nav = Nav::findOne($navId); if (!$nav) { throw new InvalidCallException("Unable to find the requested model."); } $model = $nav->createCopy(); foreach ($nav->navItems as $item) { $newItem = new NavItem(); $newItem->attributes = $item->toArray(); $newItem->nav_id = $model->id; $newItem->parent_nav_id = $model->parent_nav_id; $newItem->title = $item->title . ' (copy)'; $newItem->alias = $item->alias . '-' . time(); if ($newItem->save() && !empty($newItem->nav_item_type_id)) { $item->copyTypeContent($newItem); } } return true; }
/** * * @param unknown $navId * @param unknown $langId * @param unknown $title * @param unknown $alias * @param unknown $redirectType The type of redirect (1 = page, 2 = URL, 3 = Link to File) * @param unknown $redirectTypeValue Depending on the type (1 = cms_nav.id, 2 = http://luya.io) * @param unknown $description * @return boolean */ public function createRedirectItem($navId, $langId, $title, $alias, $redirectType, $redirectTypeValue, $description) { $_errors = []; $navItem = new NavItem(); $navItem->parent_nav_id = self::findOne($navId)->parent_nav_id; $navItemRedirect = new NavItemRedirect(); $navItem->attributes = ['nav_id' => $navId, 'lang_id' => $langId, 'title' => $title, 'alias' => $alias, 'description' => $description, 'nav_item_type' => 3]; $navItemRedirect->attributes = ['type' => $redirectType, 'value' => $redirectTypeValue]; if (!$navItem->validate()) { $_errors = ArrayHelper::merge($navItem->getErrors(), $_errors); } if (!$navItemRedirect->validate()) { $_errors = ArrayHelper::merge($navItemRedirect->getErrors(), $_errors); } if (!empty($_errors)) { return $_errors; } $navItemRedirect->save(); $navItem->nav_item_type_id = $navItemRedirect->id; $navItemId = $navItem->save(); return $navItemId; }