2015-10-22

beego Tutorial 7 : 관리자 수정하기



  • xyz/views/admin/index.html 에서 비밀번호변경 버튼 오른편에 수정 버튼을 추가한다.
    ...
     
    <a href="/admin/chg_passwd_form/{{$admins.Id}}" class="btn btn-default btn-xs" data-toggle="modal" data-target="#myModal">비밀번호변경</a>
    <a href="/admin/update_form/{{$admins.Id}}" class="btn btn-default btn-xs" data-toggle="modal" data-target="#myModal">수정</a>
     
    ...
  • xyz/views/admin/update_form.html 을 작성한다.
    <div class="modal-header">
      <button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">&times;</span></button>
      <h4 class="modal-title">관리자 수정</h4>
    </div>
    <div class="modal-body">
      <form name="update_form" action="/admin/update" method="post">
        {{ .xsrfdata }}
        <div class="form-group">
          <label>아이디</label>
          <input type="text" name="userid" class="form-control" readonly required pattern="[a-zA-Z0-9]+" value="{{.admin.Userid}}"/>
          <input type="hidden" name="id" class="form-control" value="{{.admin.Id}}" />
        </div>
        <div class="form-group">
          <label>별명 <small>(필수)</small></label>
          <input type="text" name="nick" class="form-control" required value="{{.admin.Nick}}"/>
        </div>
        <div class="form-group" style="text-align: right">
          <input class="btn btn-primary" type="submit" value="관리자 수정" />
        </div>
      </form>
    </div>
  • xyz/controllers/admin.go 에 다음을 추가한다.
    ...
     
    // 관리자 수정 폼
    func (c *AdminController) Update_form() {
        id, _ := strconv.Atoi(c.Ctx.Input.Param(":id"))
        admin := new(models.Admin)
        admin.Read(id)
     
        c.Data["xsrfdata"] = template.HTML(c.XsrfFormHtml())
        c.Data["admin"] = admin
        c.TplNames = "admin/update_form.html"
    }
     
    ...
  • xyz/routers/router.go 에 다음을 추가한다.
    beego.Router("/admin/update_form/:id", &c.AdminController{}, "get:Update_form")
  • 이제, 수정 버튼을 클릭하면 수정할 수 있는 폼이 나타나게 될 것이다. 마지막으로 실제로 수정을 처리하는 루틴을 작성하고 라우터에 등록하자.
  • xyz/models/admin.go 에 다음을 추가한다.
    ...
     
    func (this *Admin) Update(id int, nick string) {
        o := orm.NewOrm()
        o.Using("default")
     
        this.Id = id
        o.Read(this)
        this.Nick = nick
     
        o.Update(this)
    }
     
    ...
  • xyz/controllers/admin.go 에 다음을 추가한다.
    ...
     
    // 관리자 수정
    func (c *AdminController) Update() {
        id, _ := c.GetInt("id")
        nick := c.GetString("nick")
     
        admin := new(models.Admin)
        admin.Update(id, nick)
     
        c.Redirect(c.UrlFor(".Index"), 302)
    }
     
    ...
  • xyz/routers/router.go 에 다음을 추가하고, 수정 작업을 진행해보자.
    beego.Router("/admin/update", &c.AdminController{}, "post:Update")


댓글 없음:

댓글 쓰기