Skip to content
关注公众号,获取新课通知

修改管理员


控制器:app/controller/admin/manager.js

js
	// 编辑表单页
	async edit(){
        const { ctx, app } = this;
        const id = ctx.params.id
        let data = await app.model.Manager.findOne({
            where:{
                id
            }
        })
        if(!data){
            return await ctx.pageFail('该记录不存在')
        }

        data = JSON.parse(JSON.stringify(data))
        delete data.password

        await ctx.renderTemplate({
            id:ctx.params.id,
            title: "修改管理员",
            tempType: "form",
            form: {
                // 提交地址
                action: "/admin/manager/" + ctx.params.id,
                fields,
                data
            },
            // 新增成功跳转路径
            successUrl:"/admin/manager"
        })
    }
	// 更新逻辑
    async update(){
        const { ctx, app } = this;
        ctx.validate({
            id:{
                type:"int",
                required:true
            },
            username:{
                type:"string",
                required:true
            },
            password:{
                type:"string",
            },
        })
        const id = ctx.params.id
        const { username,password } = ctx.request.body
        // 用户名是否被使用
        const Op = app.Sequelize.Op;
        if(await app.model.Manager.findOne({
            where:{
                id:{
                    [Op.ne]: id,
                },
                username
            }
        })){
            return ctx.apiFail('该用户名已存在')
        }
        // 当前管理员是否存在
        let manager = await app.model.Manager.findOne({
            where:{
                id
            }
        })
        if(!manager){
            return ctx.apiFail('该记录不存在')
        }

        manager.username = username
        if(password){
            manager.password = password
        }
        ctx.apiSuccess(await manager.save())
    }

扩展:app/extend/context.js

js
// 页面失败提示
   async pageFail(data = '', code = 404){
       return await this.render('admin/common/404.html', {
           data, code
       })
   },

模板:app/view/admin/common/404.html

html
{% extends "admin/layout/main.html" %}
{% block title %}404{% endblock %}
{% block body %}
<div class="error-page">	
    <!-- Main Wrapper -->
    <div class="main-wrapper">
        <div class="error-box">
            <h1>{{ code }}</h1>
            <h3 class="h2 mb-3"><i class="fa fa-warning"></i> {{ data }} </h3>
            <a href="/admin" class="btn btn-primary">返回后台首页</a>
        </div>
    </div>
</body>
{% endblock %}

路由:app/router.js

js
router.get("/admin/manager/edit/:id", controller.admin.manager.edit);
router.post("/admin/manager/:id", controller.admin.manager.update);