diff --git a/net/ghttp/ghttp_response_view.go b/net/ghttp/ghttp_response_view.go index bb7abf1af..ca4a14473 100644 --- a/net/ghttp/ghttp_response_view.go +++ b/net/ghttp/ghttp_response_view.go @@ -84,6 +84,7 @@ func (r *Response) buildInVars(params ...map[string]interface{}) map[string]inte gutil.MapMerge(m, map[string]interface{}{ "Form": r.Request.GetFormMap(), "Query": r.Request.GetQueryMap(), + "Request": r.Request.GetMap(), "Cookie": r.Request.Cookie.Map(), "Session": r.Request.Session.Map(), }) diff --git a/net/ghttp/ghttp_unit_template_test.go b/net/ghttp/ghttp_unit_template_test.go index 781443af7..63bf01aef 100644 --- a/net/ghttp/ghttp_unit_template_test.go +++ b/net/ghttp/ghttp_unit_template_test.go @@ -139,6 +139,27 @@ func Test_Template_Layout2(t *testing.T) { }) } +func Test_Template_BuildInVarRequest(t *testing.T) { + gtest.C(t, func(t *gtest.T) { + p, _ := ports.PopRand() + s := g.Server(p) + s.BindHandler("/:table/test", func(r *ghttp.Request) { + err := r.Response.WriteTplContent("{{.Request.table}}") + t.Assert(err, nil) + }) + s.SetDumpRouterMap(false) + s.SetPort(p) + s.Start() + defer s.Shutdown() + time.Sleep(100 * time.Millisecond) + client := g.Client() + client.SetPrefix(fmt.Sprintf("http://127.0.0.1:%d", p)) + + t.Assert(client.GetContent("/user/test"), "user") + t.Assert(client.GetContent("/order/test"), "order") + }) +} + func Test_Template_XSS(t *testing.T) { gtest.C(t, func(t *gtest.T) { v := gview.New()