2014-07-14 39 views
0

隨緣manual說:不同的操作使用相同的模板陶醉

給定一個名爲你好名爲世界動作控制器,狂歡將尋找一個模板文件命名視圖/你好/ World.html。

有沒有辦法在Revel中使用相同的模板和不同的動作?類似名爲World和World2的動作使用views/Hello/World.html。

+0

沒有答案,但符號鏈接將有所幫助。 – OneOfOne

回答

0

我檢查了陶醉的源代碼,我不認爲你可以這樣做。

這裏是控制器的渲染功能,只是看到最後一行:

func (c *Controller) Render(extraRenderArgs ...interface{}) Result { 
// Get the calling function name. 
_, _, line, ok := runtime.Caller(1) 
if !ok { 
    ERROR.Println("Failed to get Caller information") 
} 

// Get the extra RenderArgs passed in. 
if renderArgNames, ok := c.MethodType.RenderArgNames[line]; ok { 
    if len(renderArgNames) == len(extraRenderArgs) { 
     for i, extraRenderArg := range extraRenderArgs { 
      c.RenderArgs[renderArgNames[i]] = extraRenderArg 
     } 
    } else { 
     ERROR.Println(len(renderArgNames), "RenderArg names found for", 
      len(extraRenderArgs), "extra RenderArgs") 
    } 
} else { 
    ERROR.Println("No RenderArg names found for Render call on line", line, 
     "(Action", c.Action, ")") 
} 

//templatePath = c.Name + "/" + c.MethodType.Name + "." + c.Request.Format 
return c.RenderTemplate(c.Name + "/" + c.MethodType.Name + "." + c.Request.Format) 

} RenderTemplate的

和源代碼:

func (c *Controller) RenderTemplate(templatePath string) Result { 

// Get the Template. 
template, err := MainTemplateLoader.Template(templatePath) 
if err != nil { 
    return c.RenderError(err) 
} 

return &RenderTemplateResult{ 
    Template: template, 
    RenderArgs: c.RenderArgs, 
} 

}

GitHub的鏈接here

也許你可以只創建World.html

的別名文件
+0

如何通過vars渲染模板? – pregmatch

+0

@pregmatch,渲染函數需要extraRenderArgs,這是你的意思是關於pass vars? – chendesheng

+0

是的是用c.Args [「somevar」] = var解決了這個問題。謝謝 – pregmatch

0

只要指定你的行動通過RenderTemplate通用模板():

func (c *Con) ActionA() revel.Result { 
    return c.RenderTemplate("the view path"); 
} 
+0

如何通過vars渲染模板? – pregmatch

1

您可以嘗試類似這樣:

func (c App) New() revel.Result { 
    var event models.Event 
    event.Start_Year = time.Now().Year() 
    c.RenderArgs["event"] = event 
    return c.RenderTemplate("app/edit.html") 
} 
相關問題