From 60fa83c1585fb5be155e498e60accc2f6926f69b Mon Sep 17 00:00:00 2001 From: john Date: Mon, 15 Oct 2018 13:46:51 +0800 Subject: [PATCH] =?UTF-8?q?=E6=A8=A1=E6=9D=BF=E5=BC=95=E6=93=8E=E5=A2=9E?= =?UTF-8?q?=E5=8A=A0text/html=E6=96=B9=E6=B3=95=EF=BC=8C=E7=94=A8=E4=BA=8E?= =?UTF-8?q?=E8=BF=87=E6=BB=A4html=E6=A0=87=E7=AD=BE=E5=8F=8A=E4=BF=9D?= =?UTF-8?q?=E7=95=99html=E6=A0=87=E7=AD=BE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- g/net/ghttp/ghttp_response_view.go | 6 +++--- g/os/gview/gview.go | 7 +++++++ geg/os/gview/func_html/func_html.go | 24 ++++++++++++++++++++++++ 3 files changed, 34 insertions(+), 3 deletions(-) create mode 100644 geg/os/gview/func_html/func_html.go diff --git a/g/net/ghttp/ghttp_response_view.go b/g/net/ghttp/ghttp_response_view.go index f405699ba..2a4ec4780 100644 --- a/g/net/ghttp/ghttp_response_view.go +++ b/g/net/ghttp/ghttp_response_view.go @@ -48,7 +48,7 @@ func (r *Response) ParseTpl(tpl string, params map[string]interface{}, funcmap.. if len(funcmap) > 0 { fmap = funcmap[0] } - return gins.View().Parse(tpl, r.buildInVars(params), r.buildInfuncs(fmap)) + return gins.View().Parse(tpl, r.buildInVars(params), r.buildInFuncs(fmap)) } // 解析并返回模板内容 @@ -57,7 +57,7 @@ func (r *Response) ParseTplContent(content string, params map[string]interface{} if len(funcmap) > 0 { fmap = funcmap[0] } - return gins.View().ParseContent(content, r.buildInVars(params), r.buildInfuncs(fmap)) + return gins.View().ParseContent(content, r.buildInVars(params), r.buildInFuncs(fmap)) } // 内置变量 @@ -72,7 +72,7 @@ func (r *Response) buildInVars(params map[string]interface{}) map[string]interfa } // 内置函数 -func (r *Response) buildInfuncs(funcmap map[string]interface{}) map[string]interface{} { +func (r *Response) buildInFuncs(funcmap map[string]interface{}) map[string]interface{} { if funcmap == nil { funcmap = make(map[string]interface{}) } diff --git a/g/os/gview/gview.go b/g/os/gview/gview.go index 8f9e0d592..5e14952eb 100644 --- a/g/os/gview/gview.go +++ b/g/os/gview/gview.go @@ -78,6 +78,7 @@ func New(path string) *View { view.SetDelimiters("{{", "}}") // 内置方法 view.BindFunc("text", view.funcText) + view.BindFunc("html", view.funcHtml) view.BindFunc("include", view.funcInclude) return view } @@ -168,3 +169,9 @@ func (view *View) funcText(html interface{}) string { return ghtml.StripTags(gconv.String(html)) } +// 模板内置方法:html +func (view *View) funcHtml(html interface{}) template.HTML { + return template.HTML(gconv.String(html)) +} + + diff --git a/geg/os/gview/func_html/func_html.go b/geg/os/gview/func_html/func_html.go new file mode 100644 index 000000000..dcd47a3aa --- /dev/null +++ b/geg/os/gview/func_html/func_html.go @@ -0,0 +1,24 @@ +package main + +import ( + "gitee.com/johng/gf/g/os/gview" + "gitee.com/johng/gf/g" +) + +func main() { + if c, err := gview.ParseContent(`{{"
测试
模板引擎默认处理HTML标签\n"}}`, nil); err == nil { + g.Dump(c) + } else { + g.Dump(c) + } + if c, err := gview.ParseContent(`{{"
测试
去掉HTML标签\n"|text}}`, nil); err == nil { + g.Dump(c) + } else { + g.Dump(c) + } + if c, err := gview.ParseContent(`{{"
测试
保留HTML标签\n"|html}}`, nil); err == nil { + g.Dump(c) + } else { + g.Dump(c) + } +}