Lumen企业站内容管理实战 - 管理员列表

管理员列表

 增删该查搞起来,先搞定路由

    // 管理员管理
    $router->get('/admin/list', 'AdminController@lists'); // 管理员列表
    $router->addRoute(['GET', 'POST'],'/admin/add', 'AdminController@add'); // 添加管理员
    $router->addRoute(['GET', 'POST'],'/admin/edit/{id:[1-9]+}', 'AdminController@edit');                     // 编辑管理员
    $router->post('/admin/del', 'AdminController@del'); // 删除管理员

然后管理员模型,管理员模型我们之前已经建立好了,这里我们直接写个列表lists()方法

belongsToMany(Role::class, 'admin_roles', 'admin_id', 'role_id');
    }

    public static function lists(array $conditions, $page = 0, $perPage = 15)
    {
        $article = Admin::with('roles');

        !empty($conditions['title']) && $article->where('title', 'like', "{$conditions['title']}%"); // 模糊匹配标题查询
        $article->orderBy('id', 'DESC');

        return $article->paginate($perPage, ['*'], 'page', $page);
    }
}

管理员控制器

input(),$request->input('page',0));

        $data['admins'] = $admins;
        return view('admin.admin.list', $data);
    }
}

前端代码我就不贴出来了,直接看看效果

Lumen企业站内容管理实战 - 管理员列表_第1张图片 

添加管理员,先写模型

public static function add(array $adminData, array $roleData)
    {

        try {

            DB::transaction(function () use ($adminData, $roleData) {
                // 保存管理员信息
                $admin = new Admin();
                $admin->user_name = $adminData['user_name'];
                $admin->password = password_hash($adminData['password'], PASSWORD_BCRYPT); // 生成密码,不能明文保存
                $admin->email = $adminData['email'];
                $admin->state = (int)$adminData['state'];
                $admin->save();

                // 使用attach保存管理员和角色关系信息
                $admin->roles()->attach(array_values($roleData));
            });

        } catch (\Exception $e) {
            Log::error('添加管理员信息失败,失败信息:' . $e->getMessage());
            return false;
        }

        return true;

    }

 控制器中写个add方法

public function add(Request $request)
    {

        if($request->post()){
            // todo 验证数据;验证管理员不能重复
            Admin::add($request->input(),$request->input('roles'));

            return $this->response->responseJSON();
        }

        // 角色列表
        $roles = Role::lists();

        $data['roles'] = $roles;
        return view('admin.admin.add',$data);
    }

前端页面不帖出来了,直接看效果

Lumen企业站内容管理实战 - 管理员列表_第2张图片

 

 

 数据录入成功。

来看看编辑。先去模型里写个方法

    public static function edit(Admin $admin, array $adminData, array $roleData)
    {
        try {

            DB::transaction(function () use ($admin, $adminData, $roleData) {

                // 编辑使用sync(),使用其它的不行,attach是添加,detach是删除。
                $admin->roles()->sync(array_values($roleData));

                // 更新管理员数据
                !empty($adminData['user_name']) && $admin->user_name = $adminData['user_name'];
                !empty($adminData['password']) && $admin->password = password_hash($adminData['password'], PASSWORD_BCRYPT); // 生成密码,不能明文保存
                !empty($adminData['email']) && $admin->email = $adminData['email'];
                $admin->state = (int)$adminData['state'];
                $admin->update();

            });


        } catch (\Exception $e) {
            Log::error('编辑管理员信息失败,失败信息:' . $e->getMessage());
            return false;
        }

        return true;

    }

控制器写个edit方法

    public function edit(int $id, Request $request)
    {

        $admin = Admin::with('roles')->where('id', $id)->first();
        // todo 如果数据不存在,跳转到错误页面

        if ($request->post()) {
            // todo 验证数据;验证是否重复
            Admin::edit($admin, $request->input(), $request->input('roles'));
            return $this->response->responseJSON();
        }


        $usedRoles = [];
        foreach ($admin->roles as $item) {
            array_push($usedRoles, $item->pivot->role_id);
        }

        // 角色列表
        $roles = Role::lists();
        $data['roles'] = $roles;
        $data['usedRoles'] = $usedRoles;
        $data['admin'] = $admin;

        return view('admin.admin.edit', $data);
    }

看看关系数据中的数据

Lumen企业站内容管理实战 - 管理员列表_第3张图片

多给几个角色

Lumen企业站内容管理实战 - 管理员列表_第4张图片

 保存后再看看数据

Lumen企业站内容管理实战 - 管理员列表_第5张图片

 再点击编辑看看

Lumen企业站内容管理实战 - 管理员列表_第6张图片

 删除不介绍了,前边都有介绍,没啥技术难度。

完。

你可能感兴趣的:(lumen教程)