On this page
修改管理员
控制器: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);