protected function handle() { $forum_id = $this->forumId; $forum = ForumModel::getForum($forum_id); $request = $this->getRequest(); $session = $this->getSession(); if (!$forum) { if ($request->isXmlHttpRequest()) { throw new \Exception('论坛不存在'); } else { $session->addFlash('error', '论坛不存在'); return new RedirectResponse($this->generateUrl('admin_forum_index')); } } if ($request->getMethod() == 'POST') { $posts = $request->request; $db = ForumDatabase::getDb(); $db->transaction(); try { $name = $posts->get('name'); if (!$name) { throw new \Exception('分组名称不能为空'); } $description = $posts->get('description'); $search = $posts->get('search'); if ($search) { // 检查重复性 $g = GroupModel::search($search, $forum_id); if ($g) { throw new \Exception('URL占位符已被使用'); } } else { $search = null; } $group = new GroupModel(); $group->name = $name; $group->search = $search; $group->description = $description; $group->forumId = $forum_id; $now = time(); $group->createTimestamp = $now; $group->updateTimestamp = $now; // 更改论坛数据 $forum->groupCount += 1; // 保存 GroupModel::createGroup($group); ForumModel::saveForum($forum); $db->commit(); $session->addFlash('success', '操作成功'); } catch (\Exception $e) { $db->rollback(); $session->addFlash('error', $e->getMessage()); } return new RedirectResponse($this->generateUrl('admin_forum_group_index', array('forum_id' => $forum_id))); } return $this->render('group/add.html.twig', array('forum' => $forum)); }