布局

使用标准布局

在我们的web应用中,可能大部分页面需要使用布局(不是全部),我们可以在创建渲染器的时候,指定一个HTMLLayout属性。

// actions/render.go
var r *render.Engine

func init() {
  r = render.New(render.Options{
    // ...
    HTMLLayout:     "application.html",
    // ...
  })
}
// templates/application.html
<html>
  <head>
    <title>My App
  </head>
  <body>
    <div id="main">
      <%= yield %>
    </div>
  </body>
</html>
// templates/hello.html
<h1>Hello!!</h1>
// actions/hello.go
package actions

func Hello(c buffalo.Context) error {
  return c.Render(200, r.HTML("hello.html"))
}
// output
<html>
  <head>
    <title>My App
  </head>
  <body>
    <div id="main">
      <h1>Hello!!
    </div>
  </body>
</html>

自定义布局

刚刚说了不是所有的web页面都是用布局,或者都是用同一个布局。所以我们可以在特定的页面上指定布局。
自定义布局不能使用在render.Auto时候。

// templates/custom.html
<html>
  <head>
    <title>My Custom Layout</title>
  </head>
  <body>
    <div id="main">
      <%= yield %>
    </div>
  </body>
</html>
// actions/hello.go
package actions

func Hello(c buffalo.Context) error {
  return c.Render(200, r.HTML("hello.html", "custom.html"))
}
// output
<html>
  <head>
    <title>My Custom Layout</title>
  </head>
  <body>
    <div id="main">
      <h1>Hello!!</h1>
    </div>
  </body>
</html>

本文章首发在 LearnKu.com 网站上。
上一篇 下一篇
superwen
讨论数量: 0
发起讨论 只看当前版本


暂无话题~