public function up() { $news_menu = Menu::findOne(['menu_name' => "资讯管理", 'menu_depth' => 0]); // 首页热门活动管理 $this->insert('{{%admin_menu}}', ['menu_name' => '首页热门活动管理', 'menu_link' => "news/activity-block", 'show_order' => 1, 'creator' => "niancode", 'create_time' => time(), 'parent_id' => $news_menu->id, 'menu_depth' => 1]); $insert_id = $this->db->getLastInsertID(); $this->insert('{{%admin_menu}}', ['menu_name' => '添加热门活动', 'menu_link' => "news/activity-block-save", 'show_order' => 0, 'creator' => "niancode", 'create_time' => time(), 'parent_id' => $insert_id, 'menu_depth' => 2]); $this->insert('{{%admin_menu}}', ['menu_name' => '修改热门活动', 'menu_link' => "news/activity-block-delete", 'show_order' => 1, 'creator' => "niancode", 'create_time' => time(), 'parent_id' => $insert_id, 'menu_depth' => 2]); }
public function up() { // 修改菜单名称 $activity_menu = Menu::findOne(['menu_name' => "首页热门活动管理", 'menu_depth' => 1]); if ($activity_menu) { $activity_menu->menu_name = '资讯首页热门活动管理'; $activity_menu->save(false); } // 资讯首页热门活动 $this->insert('{{%page_custom_block}}', ['id' => 6, 'name' => "首页资讯管理", 'custom_id' => "main_page_news", 'title' => "首页资讯管理", 'sub_title' => "首页资讯管理", 'data' => '', 'create_time' => time(), 'update_time' => time()]); // 首页推荐资讯菜单 $news_menu = Menu::findOne(['menu_name' => "首页管理", 'menu_depth' => 0]); $this->insert('{{%admin_menu}}', ['menu_name' => '首页资讯管理', 'menu_link' => "news/recommend", 'show_order' => 8, 'creator' => "niancode", 'create_time' => time(), 'parent_id' => $news_menu->id, 'menu_depth' => 1]); }
/** * Finds the Menu model based on its primary key value. * If the model is not found, a 404 HTTP exception will be thrown. * @param integer $id * @return Menu the loaded model * @throws NotFoundHttpException if the model cannot be found */ protected function findModel($id) { if (($model = Menu::findOne($id)) !== null) { return $model; } else { throw new NotFoundHttpException('The requested page does not exist.'); } }
public function actionDataTables() { $responseType = Yii::$app->request->get('type'); $returnData = []; switch ($responseType) { case "fetch": $returnData = Menu::find()->select(['id', 'name', 'parent', 'route', 'order', 'data'])->where(['parent' => Yii::$app->request->get('id')])->orderBy(['order' => SORT_ASC])->all(); return Json::encode($returnData); case "crud": $requestAction = Yii::$app->request->post('action'); switch ($requestAction) { case "create": $requestID = key(Yii::$app->request->post('data')); $requestData = Yii::$app->request->post('data')[$requestID]; $model = new Menu(); //块赋值 $model->attributes = $requestData; //返回错误信息给datatable if (!$model->validate()) { $fieldErrors = []; foreach ($model->errors as $name => $status) { $fieldErrors[] = ['name' => $name, 'status' => Json::encode($status)]; } return Json::encode(['fieldErrors' => $fieldErrors, 'data' => []]); } if ($model->save()) { $requestData['id'] = $model->id; $data = []; $data[] = $requestData; return Json::encode(['data' => $data]); } else { var_dump($model->errors); $error = '恢复操作发生意外!'; throw new Exception($error); } case "edit": $editID = array_keys(Yii::$app->request->post('data')); //执行事务,保存必须都成功了才行 $transaction = Menu::getDb()->beginTransaction(); //返回值 $data = []; try { foreach ($editID as $requestID) { $requestData = Yii::$app->request->post('data')[$requestID]; $model = Menu::findOne($requestID); //块赋值 $model->attributes = $requestData; //返回错误信息给datatable if (!$model->validate()) { $fieldErrors = []; foreach ($model->errors as $name => $status) { $fieldErrors[] = ['name' => $name, 'status' => Json::encode($status)]; } return Json::encode(['fieldErrors' => $fieldErrors, 'data' => []]); } $model->save(); //单个字段更新的时候 if (count($requestData) == 1 || !is_array($requestData)) { $requestData = Menu::find()->select(['id', 'name', 'parent', 'route', 'order', 'data'])->where(['id' => $requestID])->one(); } else { $requestData['id'] = $requestID; } $data[] = $requestData; } //提交事务 $transaction->commit(); return Json::encode(['data' => $data]); } catch (\Exception $e) { $transaction->rollBack(); throw $e; } case "remove": //多选则删除全部 用deleteAll()不会触发 event: EVENT_BEFORE_DELETE 和 EVENT_AFTER_DELETE foreach (Yii::$app->request->post('data') as $removeID => $removeData) { Menu::findOne($removeID)->delete(); } return Json::encode($returnData); default: return Json::encode($returnData); } default: throw new \Exception('参数错误!'); } }