Exemplo n.º 1
0
    protected function handle()
    {
        $request = $this->getRequest();
        $columns = array('ID', '用户名', '邮箱', '手机', '状态', '创建', '登录');
        $fields = array('id', 'username', 'email', 'mobile', 'status', 'create_timestamp', 'login_timestamp');
        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 = UserAuthModel::getCount(function (QueryBuilder $qb) use($search_value) {
                    if ($search_value) {
                        $qb->orWhere($qb->expr()->like("`username`", ":username"))->setParameter(":username", "%{$search_value}%");
                        $qb->orWhere($qb->expr()->like("`email`", ":email"))->setParameter(":email", "%{$search_value}%");
                        $qb->orWhere($qb->expr()->like("`mobile`", ":mobile"))->setParameter(":mobile", "%{$search_value}%");
                    }
                });
            }
            $page = $page_offset / $page_size + 1;
            $pager = UserAuthModel::listAuth($page, $page_size, function (QueryBuilder $qb) use($search_value) {
                if ($search_value) {
                    $qb->orWhere($qb->expr()->like("`username`", ":username"))->setParameter(":username", "%{$search_value}%");
                    $qb->orWhere($qb->expr()->like("`email`", ":email"))->setParameter(":email", "%{$search_value}%");
                    $qb->orWhere($qb->expr()->like("`mobile`", ":mobile"))->setParameter(":mobile", "%{$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])) {
                        if ($field == 'create_timestamp') {
                            // 时间
                            $line[] = date('Y-m-d H:i:s', $v[$field]);
                        } elseif ($field == 'login_timestamp') {
                            if ($v[$field]) {
                                $line[] = date('Y-m-d H:i:s', $v[$field]);
                            } else {
                                $line[] = '未登录';
                            }
                        } elseif ($field == 'status') {
                            $status = '<span class="text-success">正常</span>';
                            $line[] = $status;
                        } else {
                            $line[] = $v[$field];
                        }
                    }
                }
                $edit_url = $this->generateUrl('admin_user_edit', array('id' => $v['id']));
                $delete_url = $this->generateUrl('admin_user_delete', array('ids' => array($v['id'])));
                $operation = '<div class="btn-group">
<a href="javascript:void(0);" data-toggle="dropdown" aria-expanded="false">操作 <i class="fa fa-angle-down"></i></a>
<ul class="dropdown-menu pull-right" role="menu">
<li role="presentation"><a href="' . $edit_url . '"><i class="fa fa-edit"></i> 编辑</a></li>
<li role="presentation"><a data-toggle="modal" data-target="#modal" href="' . $delete_url . '"><i class="fa fa-remove"></i> 删除</a></li>
</ul>
</div>';
                $line[] = $operation;
                $records['data'][] = $line;
            }
            return new JsonResponse($records);
        }
        return $this->render('user/index.html.twig', array('columns' => $columns));
    }