diff --git a/net/ghttp/ghttp_server.go b/net/ghttp/ghttp_server.go index 98257bbf7..a98e47859 100644 --- a/net/ghttp/ghttp_server.go +++ b/net/ghttp/ghttp_server.go @@ -63,13 +63,14 @@ type ( // Router item just for dumping. RouterItem struct { - Type int - Middleware string - Domain string - Method string - Route string - Priority int - handler *handlerItem + Type int + Middleware string + Domain string + Method string + Route string + Priority int + IsServiceHandler bool + handler *handlerItem } // 路由函数注册信息 @@ -389,7 +390,10 @@ func (s *Server) GetRouterMap() map[string][]RouterItem { Priority: len(registeredItems) - index - 1, handler: registeredItem.handler, } - if item.handler.itemType == gHANDLER_TYPE_MIDDLEWARE { + switch item.handler.itemType { + case gHANDLER_TYPE_CONTROLLER, gHANDLER_TYPE_OBJECT, gHANDLER_TYPE_HANDLER: + item.IsServiceHandler = true + case gHANDLER_TYPE_MIDDLEWARE: item.Middleware = "GLOBAL MIDDLEWARE" } if len(item.handler.middleware) > 0 { diff --git a/os/gview/gview_doparse.go b/os/gview/gview_doparse.go index 3477a0338..021dfbbb1 100644 --- a/os/gview/gview_doparse.go +++ b/os/gview/gview_doparse.go @@ -15,7 +15,6 @@ import ( "github.com/gogf/gf/os/gfcache" "github.com/gogf/gf/os/gfsnotify" "github.com/gogf/gf/os/gmlock" - "github.com/gogf/gf/text/gstr" "github.com/gogf/gf/util/gconv" "strconv" "strings" @@ -135,10 +134,11 @@ func (view *View) Parse(file string, params ...Params) (result string, err error if err := tpl.Execute(buffer, variables); err != nil { return "", err } + return view.i18nTranslate(buffer.String(), variables), nil // TODO any graceful plan to replace ""? - result = gstr.Replace(buffer.String(), "", "") - result = view.i18nTranslate(result, variables) - return result, nil + //result = gstr.Replace(buffer.String(), "", "") + //result = view.i18nTranslate(result, variables) + //return result, nil } // ParseDefault parses the default template file with params. @@ -156,7 +156,7 @@ func (view *View) ParseContent(content string, params ...Params) (string, error) err := (error)(nil) key := fmt.Sprintf("%s_%v", gCONTENT_TEMPLATE_NAME, view.delimiters) tpl := templates.GetOrSetFuncLock(key, func() interface{} { - return template.New(key).Delims(view.delimiters[0], view.delimiters[1]).Funcs(view.funcMap) + return template.New(key).Delims(view.delimiters[0], view.delimiters[1]).Funcs(view.funcMap).Option("missingkey=zero") }).(*template.Template) // Using memory lock to ensure concurrent safety for content parsing. hash := strconv.FormatUint(ghash.DJBHash64([]byte(content)), 10) @@ -200,10 +200,11 @@ func (view *View) ParseContent(content string, params ...Params) (string, error) if err := tpl.Execute(buffer, variables); err != nil { return "", err } + return view.i18nTranslate(buffer.String(), variables), nil // TODO any graceful plan to replace ""? - result := gstr.Replace(buffer.String(), "", "") - result = view.i18nTranslate(result, variables) - return result, nil + //result := gstr.Replace(buffer.String(), "", "") + //result = view.i18nTranslate(result, variables) + //return result, nil } // getTemplate returns the template object associated with given template folder . @@ -219,7 +220,7 @@ func (view *View) getTemplate(path string, pattern string) (tpl *template.Templa if files := gres.ScanDirFile(path, pattern, true); len(files) > 0 { var err error for _, v := range files { - _, err = tpl.New(v.FileInfo().Name()).Parse(string(v.Content())) + _, err = tpl.New(v.FileInfo().Name()).Option("missingkey=zero").Parse(string(v.Content())) if err != nil { glog.Error(err) }