为了账号安全,请及时绑定邮箱和手机立即绑定

使用 gorilla/schema 解包 <select> 字段

使用 gorilla/schema 解包 <select> 字段

Go
红糖糍粑 2021-06-30 15:03:06
我正在使用gorilla/schema解压r.PostForm成一个结构体。我的问题是,我试图找出一种“明智”的方式来获取<select>元素的选定值,这种方式允许我轻松html/template地重新选择字段(即从会话中重新填充表单时) ) 注意到没有一种简单的方法来测试相等性,只需将结构的实例传递给RenderTemplate.为了说明我所拥有的:type Listing struct {    Id           string        `schema:"-"`    Title        string        `schema:"title"`    Company      string        `schema:"company"`    Location     string        `schema:"location"`        ...    Term         string        `schema:"term"`}if r.Method == "POST" {// error handling code removed for brevity, but trust me, it exists!    err = r.ParseForm()    err = decoder.Decode(listing, r.PostForm)    err = listing.Validate() // checks field lengths as I'm using a schema-less datastore<label for="term">Term</label>      <select data-placeholder="Term...?" id="term" name="term" required>        <option name="term" value="full-time">Full Time</option>        <option name="term" value="part-time">Part Time</option>        <option name="term" value="contract">Contract</option>        <option name="term" value="freelance">Freelance</option>      </select>...以及当我将列表实例传递给模板时我希望能够做什么:renderTemplate(w, "create_listing.tmpl", M{        "listing":              listing,    }) <label for="term">Term</label>          <select data-placeholder="Term...?" id="term" name="term" required>            <option name="term" value="full-time" {{ if .term == "full-time" }}selected{{end}}>Full Time</option>            <option name="term" value="part-time"{{ if .term == "part-time" }}selected{{end}}>Part Time</option>            <option name="term" value="contract" {{ if .term == "contract" }}selected{{end}}>Contract</option>            <option name="term" value="freelance" {{ if .term == "freelance" }}selected{{end}}>Freelance</option>          </select>显然这行不通。我已经考虑template.FuncMap过一个可能的解决方案,但是当我想将整个列表实例传递给模板(即,而不是逐个字段)时,我不确定如何使用它。如果可能,我还想尽量减少结构中不必要的字段。我可以为每个值设置布尔字段(即Fulltime bool,但是如果用户返回并编辑内容,我需要代码将其他字段更改为“false”。有没有办法以与 的限制很好地配合的方式实现这一目标template/html?
查看完整描述

2 回答

  • 2 回答
  • 0 关注
  • 179 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信