gpt4 book ai didi

go - 从 Revel 中的 ViewArg 选择模板

转载 作者:数据小太阳 更新时间:2023-10-29 03:22:05 24 4
gpt4 key购买 nike

使用 Revel 框架,是否可以根据 ViewArg 的值选择模板?

我定义了一个基本 Controller ,它提供了一种在 views/Layout.html 中呈现内容的方法

type Controller struct {
*revel.Controller
}

func(c *Controller) RenderView(view string, extraViewArgs ...interface{}) revel.Result {
// ... omitted source
c.ViewArgs["ContentTemplateName"] = view

return c.RenderTemplate("layout.html")
}

实现这个的示例 Controller 如下

type MyController struct {
Controller
}

func (c MyController) Index() revel.Result {
bananas := "This is bananas"
return c.RenderView("App/Bananas.html", bananas)
}

然后我尝试在 layout.html 中呈现“App/Bananas.html”

{{set . "title" "Home"}}
{{template "header.html" .}}

<div class="container">
<div class="row">
{{template "flash.html" .}}
</div>
<!-- Left column of Content -->
<div class="col-md-9 col-sm-8 col-xs-12">
{{template .ContentTemplateName .}}
</div>
<!-- //Left Column of Content -->

<!-- Right column of summary -->
<div class="col-md-3 col-sm-4 hidden-xs">
<div class="container">
{{template "sidebar.html" .}}
</div>
</div>
<!-- //Right column of summary -->
</div>

{{template "footer.html" .}}

这会输出以下结果

ERROR 2018/08/31 17:46:10 template.go:338: Template compilation error (In layout.html around line 10):
unexpected ".ContentTe"... in template clause
ERROR 2018/08/31 17:46:10 server.go:99: Template Compilation Error (in layout.html:10): unexpected ".ContentTe"... in template clause

最佳答案

根据@mh-cbon 的评论,我们发现无法将变量用作模板 函数的输入

作为解决此问题以更接近所需功能的变通方法,我实现了以下(不太理想的)解决方案:

base_content_view.html

{{template "begin_content.html" . }}
<!-- content here -->
{{template "end_content.html" . }}

begin_content.html

{{template "header.html" . }}

<div class="container">
<div class="row">
{{template "flash.html" .}}
</div>
<!-- Left column of Content -->
<div class="col-md-9 col-sm-8 col-xs-12">

end_content.html

  </div>
<!-- //Left Column of Content -->

<!-- Right column of summary -->
<div class="col-md-3 col-sm-4 hidden-xs">
<div class="container">
{{template "sidebar.html" .}}
</div>
</div>
<!-- //Right column of summary -->

{{template "footer.html" .}}

base_content_view.html 是一个静态文件,在创建新 View 时将其复制粘贴为模板。此设计确实会引发其他问题,但可作为限制 template 功能的示例解决方法。

关于go - 从 Revel 中的 ViewArg 选择模板,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52123375/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com