做了《GO web入门》10.1 课后作业的童鞋看这里,你遇到的问题可能在这里

在我们替换了文章控制器里边的ArticlesFormData之后,你会发现create页面和edit页面展示异常,这是因为我们抽象出去的view.D中定义的Errors是nil类型。我们_form_field.gohtml模版中会判断.Errors.Title是否存在, 由于Errors类型是nil 所以.Errors.Title会产生undefined的报错。这时候我们只要把create和edit的方法中的view.D{}中的 Errors初始化为map类型即可,即
做了课后作业的童鞋看这里,你遇到的问题可能在这里

本帖已被设为精华帖!
本帖由系统于 1年前 自动加精
讨论数量: 2
  • 也可以不设置 Errors
// [edit方法]显示编辑的页面,因为没有错误,所以可以传入 Errors
// 显示编辑文章表单
        view.Render(w, view.D{
            "Title":   _article.Title,
            "Body":    _article.Body,
            "Article": _article,
        }, "articles.edit", "articles._form_field")
2年前 评论

我改了模板,看起来还是像贴主那样更好;


{{define "form-fields"}}
  <div class="form-group mt-3">
    <label for="title">标题</label>
    <input type="text" class="form-control {{if .Errors }}is-invalid {{end}}" name="title" value="{{ .Title }}" required>
    {{ with .Errors }}
      <div class="invalid-feedback">
        {{ .title }}
      </div>
    {{ end }}
  </div>

  <div class="form-group mt-3">
    <label for="body">内容</label>
    <textarea name="body" cols="30" rows="10" class="form-control {{if .Errors }}is-invalid {{end}}">{{ .Body }}</textarea>
    {{ with .Errors }}
      <div class="invalid-feedback">
        {{ .body }}
      </div>
    {{ end }}
  </div>
{{ end }}
1个月前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!