0
양식 데이터를 beego에 제출하고 데이터베이스에 저장하려고합니다. 그리고 몇 가지 질문을하십시오 :Beego에서 양식 제출을 처리하는 올바른 방법은 무엇입니까?
- 어떻게 핸들 요청을 수정하여 객체로 변환 할 수 있습니까?
- 요청 또는 변형 된 객체의 유효성을 검사해야합니까?
내 컨트롤러 액션 :
func (c *ServicesController) Edit() {
var err error
var id, _ = c.GetUint64(":id")
var serviceModel = models.Service{}
var service models.Service
service, err = serviceModel.FindById(id)
c.Data["Service"] = service
if err == orm.ErrNoRows || err == orm.ErrMissPK {
c.Abort("404")
}
if c.Ctx.Input.IsPost() {
err = nil
if err := c.ParseForm(&service); err != nil {
c.Abort("500")
}
serviceModel.CreateOrUpdate(service)
}
c.TplName = "services/edit.html"
}
모델 :
type Service struct {
Id uint64 `form:"-"`
Name string `orm:"size(100)" valid:"Required; MaxSize(100)" form:"name"`
}
func init() {
orm.RegisterModel(new(Service))
}
func (s *Service) FindById(id uint64) (Service, error) {
o := orm.NewOrm()
service := Service{Id: id}
err := o.Read(&service)
return service, err
}
func (s *Service) CreateOrUpdate(service Service) {
o := orm.NewOrm()
o.InsertOrUpdate(&service)
}
하지만 내가 더 id 필드가 없기 때문에 어쨌든 새로운 객체를 생성 (InsertOrUpdate
로) 양식을 제출려고 할 때 양식에서 (ID 매개 변수에서 경로에서 객체를 검색하기 때문에). 어쨌든 양식에 이드를 전달해야할까요, 아니면 어떻게 해킹할까요? 양식 구문 분석 후
나도 생각하지만 못생긴가요? 데이터베이스에서 객체를 가져 와서 양식 데이터를 적용합니다. 왜 양식에없는 ID를 대체합니까? –
당신은'ParseForm' 메서드를 보여 주어야합니다. 왜 그것을 덮어 쓰는 지 전혀 모릅니다. – dave
그것은 내 것이 아니고, beego에서 가져 왔습니다. –