第十六单元(修改功能)
<h1>beego框架修改功能</h1>
<h2>一、定义路由</h2>
<pre><code class="language-go">beego.Router("/user/update", &controllers.UserController{}, "get:UserUpdate") //修改页面
beego.Router("/user/edit", &controllers.UserController{}, "post:UserEdit") //执行修改</code></pre>
<h2>二、控制器定义</h2>
<pre><code class="language-go">func (this *UserController) UserUpdate() {
id, err := this.GetInt("id")
if err != nil {
this.Ctx.WriteString("参数错误")
}
Orm := orm.NewOrm()
user := models.User{}
user.Id = id
err = Orm.Read(&user)
if err != nil {
beego.Info("查询失败", err)
}
this.Data["Id"] = user.Id
this.Data["Name"] = user.Name
this.Data["Mobile"] = user.Mobile
this.Data["Avatar"] = user.Avatar
this.TplName = "user/update.html"
}
func (u *UserController) UserEdit() {
var path string = ""
name := u.GetString("name")
mobile := u.GetString("mobile")
id, err := u.GetInt("id")
File, FileHeader, err := u.GetFile("avatar")
if err != nil {
path = u.GetString("old")
} else {
//文件夹要存在
path = "static/img/" + FileHeader.Filename
}
err = u.SaveToFile("avatar", path)
if err != nil {
fmt.Println(err.Error())
}
defer File.Close()
orm := orm.NewOrm()
//结构体对象
user := models.User{}
//查询的更新对象
user.Id = id
err = orm.Read(&user)
//给对象重新赋值
if err == nil {
user.Name = name
user.Mobile = mobile
user.Avatar = path
//更新数据库
_, err = orm.Update(&user)
if err != nil {
beego.Info("更新失败", err)
return
}
}
url := "http://127.0.0.1:8080/user/list"
u.Ctx.Redirect(302, url)
}
</code></pre>
<h2>三、HTML页面</h2>
<pre><code class="language-html"><!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
<div class="main">
<form action="/user/edit" method="post" enctype="multipart/form-data">
用户名 <input type="text" name="name" value="{{.Name}}">
手机号 <input type="text" name="mobile" value="{{.Mobile}}">
头像 <input type="file" name="avatar">
<img src="/{{.Avatar}}" width="100px">
<input type="hidden" name="id" value="{{.Id}}">
<input type="hidden" name="old" value="{{.Avatar}}">
<button type="submit">提交</button>
</form>
</div>
</body>
</html>
</code></pre>