blue-jay / blueprint是一个MVC(https://blue-jay.github.io/views/)快速入门golang webapp,带有针对mysql的CRUD和其他开箱即用的功能。
'struct'中的数据库字段没有问题,那些正在加载和渲染正常。如何声明与数据库字段或'struct'无关的变量。
控制器/类别/ category.go:
// Package category provides a simple CRUD in a web page.
package category
import (
"net/http"
"github.com/blue-jay/blueprint/lib/flight"
"github.com/blue-jay/blueprint/middleware/acl"
"github.com/blue-jay/blueprint/model/category"
"github.com/blue-jay/core/form"
"github.com/blue-jay/core/pagination"
"github.com/blue-jay/core/router"
)
var (
uri = "/categories"
)
// Load routes.
func Load() {
c := router.Chain(acl.DisallowAnon)
router.Get(uri, Index, c...)
router.Get(uri+"/create", Create, c...)
router.Post(uri+"/create", Store, c...)
}
// Create displays html page.
func Create(w http.ResponseWriter, r *http.Request) {
c := flight.Context(w, r)
v := c.View.New("categories/create")
v.Vars["test"] = "Testing" <--- VARIABLE IN QUESTION
form.Repopulate(
r.Form,
v.Vars,
"parent_id",
"title",
"icon",
"description",
"url",
"sort",
"status_id",
"guid_id",
"role_id",
"user_id")
v.Render(w, r)
}
查看/分类/ create.tmpl
{{define "title"}}New Category{{end}}
{{define "head"}}{{end}}
{{define "content"}}
<div class="page-header"><h1>{{template "title" .}}</h1></div>
{{ .test }} <--- VARIABLE IN QUESTION
{{template "footer" .}}
{{end}}
{{define "foot"}}{{end}}
为了简洁起见,我已经删除了大部分表格和模型(型号/类别/ category.go)。
我们在这里寻找的是如何从控制器中创建和填充变量“test”,并让它在模板中显示其值“Testing”。目前,它输出什么都没有。
令我感到困惑的是,我已经声明了一个变量'guid',并在另一个控制器(看起来是这样的)中调用它(在func Index中的“controller / register / register.go”并在/ view / register中输出/index.tmpl在下面的github链接中找到。)这似乎工作正常。我找不到我在做什么不同。我显然不明白的东西。
其余代码:https://github.com/iamtoc/blueprint-ledger
进入golang只有几天,所以还是很新的。知道如何做到这一点?谢谢!
答案 0 :(得分:1)
我已经检查了你的github存储库,发现了很多像
这样的破坏导入"github.com/blue-jay/blueprint/model/category"
用您的回购路径blue-jay/blueprint
替换iamtoc/blueprint-ledger
后,我能够运行原始代码
v.Vars["test"] = "Testing" <--- VARIABLE IN QUESTION
form.Repopulate(
r.Form,
v.Vars,
"parent_id",
...
没有任何问题,可以看到打印出的测试模板变量。 我怀疑,你只是错误地复制了原始的蓝杰/蓝图项目,因为我还用原始仓库测试了这个案例,并且它再次按预期工作。