protected function handle() { $request = $this->getRequest(); if ($request->getMethod() == 'POST') { $ids = $request->request->get('ids'); $session = $this->getSession(); $db = TagModel::getDb(); try { $db->transaction(); foreach ($ids as $id) { TagModel::deleteTag($id); } $db->commit(); $session->addFlash('success', '操作成功'); } catch (\Exception $e) { $db->rollback(); $session->addFlash('error', $e->getMessage()); } return new RedirectResponse($this->generateUrl('admin_www_tag')); } else { $ids = $request->query->get('ids'); $ids = json_decode($ids); if (!$ids) { return $this->render('@TachigoWWWAdmin/error-modal.html.twig', array('message' => '没有选中任何标签')); } else { $pager = TagModel::listTags(1, count($ids), function (QueryBuilder $qb) use($ids) { $qb->where($qb->expr()->in('id', $ids)); }); return $this->render('tag/delete.html.twig', array('tags' => $pager)); } } }
protected function handle() { $columns = array('ID', '名称', '描述', 'URL占位符', '内容数量', '创建时间', '更新时间'); $fields = array('id', 'name', 'description', 'slug', 'article_count', 'create_timestamp', 'update_timestamp'); $request = $this->getRequest(); if ($request->isXmlHttpRequest()) { $posts = $request->request; $page_offset = $posts->get('start'); $page_offset = intval($page_offset); $page_size = $posts->get('length'); $page_size = intval($page_size); $is_all = false; if ($page_size < 0) { $is_all = true; } $s_echo = $posts->get('draw'); $s_echo = intval($s_echo); $search = $posts->get('search'); $search_value = $search['value']; $records = array(); $records['data'] = array(); $records['draw'] = $s_echo; $records['recordsTotal'] = 0; $records['recordsFiltered'] = 0; if ($is_all) { $page_size = TagModel::getCount(function (QueryBuilder $qb) use($search_value) { if ($search_value) { $qb->orWhere($qb->expr()->like("`name`", ":name"))->setParameter(":name", "%{$search_value}%"); $qb->orWhere($qb->expr()->like("`slug`", ":slug"))->setParameter(":slug", "%{$search_value}%"); } }); } $page = $page_offset / $page_size + 1; $pager = TagModel::listTags($page, $page_size, function (QueryBuilder $qb) use($search_value) { if ($search_value) { $qb->orWhere($qb->expr()->like("`name`", ":name"))->setParameter(":name", "%{$search_value}%"); $qb->orWhere($qb->expr()->like("`slug`", ":slug"))->setParameter(":slug", "%{$search_value}%"); } $qb->addOrderBy('create_timestamp', 'desc'); }); $total = $pager->getCount(); $records['recordsTotal'] = $total; $records['recordsFiltered'] = $total; $data = $pager->getData(); foreach ($data as $k => $v) { $line = array(); $line[] = '<input type="checkbox" name="id[]" value="' . $v['id'] . '">'; foreach ($fields as $field) { if (isset($v[$field]) || $v[$field] === null) { if ($field == 'create_timestamp' || $field == 'update_timestamp') { // 时间 $line[] = date('Y-m-d H:i:s', $v[$field]); } elseif ($field == 'slug') { if (!$v[$field]) { $line[] = 'Null'; } else { $line[] = $v[$field]; } } elseif ($field == 'article_count') { $line[] = intval($v[$field]); } elseif (!$v[$field]) { $line[] = ' '; } else { $line[] = $v[$field]; } } } $edit_url = $this->generateUrl('admin_www_tag_edit', array('id' => $v['id'])); $line[] = '<a data-toggle="modal" data-target="#modal" href="' . $edit_url . '">编辑</a>'; $records['data'][] = $line; } return new JsonResponse($records); } return $this->render('tag/index.html.twig', array('columns' => $columns)); }