mirror of
https://github.com/astaxie/beego.git
synced 2024-11-22 15:50:56 +00:00
Don't allow AddViewPath after beego run
This commit is contained in:
parent
dfa74faf43
commit
fc2c0f4fba
1
hooks.go
1
hooks.go
@ -72,6 +72,7 @@ func registerSession() error {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func registerTemplate() error {
|
func registerTemplate() error {
|
||||||
|
defer lockViewPaths()
|
||||||
if err := AddViewPath(BConfig.WebConfig.ViewsPath); err != nil {
|
if err := AddViewPath(BConfig.WebConfig.ViewsPath); err != nil {
|
||||||
if BConfig.RunMode == DEV {
|
if BConfig.RunMode == DEV {
|
||||||
logs.Warn(err)
|
logs.Warn(err)
|
||||||
|
16
template.go
16
template.go
@ -32,7 +32,8 @@ import (
|
|||||||
|
|
||||||
var (
|
var (
|
||||||
beegoTplFuncMap = make(template.FuncMap)
|
beegoTplFuncMap = make(template.FuncMap)
|
||||||
// beeViewPathTemplates caching map and supported template file extensions.
|
beeViewPathTemplateLocked = false
|
||||||
|
// beeViewPathTemplates caching map and supported template file extensions per view
|
||||||
beeViewPathTemplates = make(map[string]map[string]*template.Template)
|
beeViewPathTemplates = make(map[string]map[string]*template.Template)
|
||||||
templatesLock sync.RWMutex
|
templatesLock sync.RWMutex
|
||||||
// beeTemplateExt stores the template extension which will build
|
// beeTemplateExt stores the template extension which will build
|
||||||
@ -48,6 +49,9 @@ func ExecuteTemplate(wr io.Writer, name string, data interface{}) error {
|
|||||||
return ExecuteViewPathTemplate(wr,name, BConfig.WebConfig.ViewsPath, data)
|
return ExecuteViewPathTemplate(wr,name, BConfig.WebConfig.ViewsPath, data)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// ExecuteViewPathTemplate applies the template with name and from specific viewPath to the specified data object,
|
||||||
|
// writing the output to wr.
|
||||||
|
// A template will be executed safely in parallel.
|
||||||
func ExecuteViewPathTemplate(wr io.Writer, name string, viewPath string, data interface{}) error {
|
func ExecuteViewPathTemplate(wr io.Writer, name string, viewPath string, data interface{}) error {
|
||||||
if BConfig.RunMode == DEV {
|
if BConfig.RunMode == DEV {
|
||||||
templatesLock.RLock()
|
templatesLock.RLock()
|
||||||
@ -156,11 +160,21 @@ func AddTemplateExt(ext string) {
|
|||||||
beeTemplateExt = append(beeTemplateExt, ext)
|
beeTemplateExt = append(beeTemplateExt, ext)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// AddViewPath adds a new path to the supported view paths.
|
||||||
|
//Can later be used by setting a controller ViewPath to this folder
|
||||||
|
//will panic if called after beego.Run()
|
||||||
func AddViewPath(viewPath string) error {
|
func AddViewPath(viewPath string) error {
|
||||||
|
if beeViewPathTemplateLocked {
|
||||||
|
panic("Can not add new view paths after beego.Run()")
|
||||||
|
}
|
||||||
beeViewPathTemplates[viewPath] = make(map[string]*template.Template)
|
beeViewPathTemplates[viewPath] = make(map[string]*template.Template)
|
||||||
return BuildTemplate(viewPath)
|
return BuildTemplate(viewPath)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func lockViewPaths() {
|
||||||
|
beeViewPathTemplateLocked = true
|
||||||
|
}
|
||||||
|
|
||||||
// BuildTemplate will build all template files in a directory.
|
// BuildTemplate will build all template files in a directory.
|
||||||
// it makes beego can render any template file in view directory.
|
// it makes beego can render any template file in view directory.
|
||||||
func BuildTemplate(dir string, files ...string) error {
|
func BuildTemplate(dir string, files ...string) error {
|
||||||
|
Loading…
Reference in New Issue
Block a user