20 Star 165 Fork 27

qiqi/orange

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
克隆/下载
view.go 1.87 KB
一键复制 编辑 原始数据 按行查看 历史
qiqi 提交于 2020-04-10 20:13 . view支持模板引入
package app
import (
"gitee.com/zhucheer/orange/view"
)
type viewTmpl struct {
ShareAssigns map[string]interface{}
IncludeTmplName []string
}
func newViewTmpl() *viewTmpl {
return &viewTmpl{
ShareAssigns: make(map[string]interface{}),
IncludeTmplName: make([]string, 0),
}
}
// AddIncludeTmpl添加引入模版
func (c *Context) AddIncludeTmpl(viewName string) {
c.mutx.Lock()
defer c.mutx.Unlock()
c.view.IncludeTmplName = append(c.view.IncludeTmplName, viewName)
}
// ShareAssign 全局通用模板变量
func (c *Context) ShareAssign(key string, viewData interface{}) {
if c.view == nil {
panic("viewTmpl not init")
}
c.mutx.Lock()
defer c.mutx.Unlock()
c.view.ShareAssigns[key] = viewData
return
}
// ViewHtml 快速渲染html视图
func (c *Context) ViewHtml(viewName string, viewDatas ...interface{}) error {
tmpl := view.ContextTmpl(viewName, c.view.IncludeTmplName...)
for _, item := range viewDatas {
tmpl = tmpl.Assigns(item)
}
c.putAssignVar(tmpl)
htmlRes, err := tmpl.Render()
if err != nil {
c.HttpError(err.Error(), 500)
return err
}
c.ResponseReset()
c.ResponseWrite([]byte(htmlRes))
return nil
}
// ViewHtml 快速渲染text视图
func (c *Context) ViewText(viewName string, viewDatas ...interface{}) error {
tmpl := view.ContextTmpl(viewName, c.view.IncludeTmplName...)
for _, item := range viewDatas {
tmpl = tmpl.Assigns(item)
}
c.putAssignVar(tmpl)
htmlRes, err := tmpl.RenderText()
if err != nil {
c.HttpError(err.Error(), 500)
return err
}
c.ResponseReset()
c.response.Header().Set("Content-Type", "text/plain;charset=utf-8")
c.ResponseWrite([]byte(htmlRes))
return nil
}
// putDefaultVar 注入系统变量
func (c *Context) putAssignVar(tmpl *view.AppTemplate) {
c.view.ShareAssigns["CSRF_TOKEN"] = c.CsrfToken
c.view.ShareAssigns["REQUEST_REFERER"] = c.OrangeInput.Referer()
tmpl.Assigns(c.view.ShareAssigns)
}
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
Go
1
https://gitee.com/zhucheer/orange.git
git@gitee.com:zhucheer/orange.git
zhucheer
orange
orange
v0.2.11

搜索帮助