As of December 1st, 2019 Buffalo, and all related packages, require Go Modules and the use of the
GOPATH
is no longer supported.
Please see this blog post for more information https://blog.gobuffalo.io/the-road-to-1-0-requiring-modules-5672c6b015e5.
Layouts
This document only applies when using https://github.com/gobuffalo/buffalo/render.
Please see github.com/gobuffalo/plush for more details on the underlying templating package.
Using a Standard Layout
It is quite common to want to use the same layout across most, if not all of an application. When creating a new render.Engine
the HTMLLayout
property can be set to a file that will automatically be used by the render.HTML
function.
// 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!!
// 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>
Using a Custom Layout
Sometimes, on certain requests, a different layout is needed. This alternate layout can be passed in as the second parameter to render.HTML
. Custom layouts do NOT work with render.Auto
.
// actions/render.go
var r *render.Engine
func init() {
r = render.New(render.Options{
// ...
HTMLLayout: "application.html",
// ...
})
}
// templates/custom.html
<html>
<head>
<title>My Custom Layout</title>
</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", "custom.html"))
}
// output
<html>
<head>
<title>My Custom Layout</title>
</head>
<body>
<div id="main">
<h1>Hello!!</h1>
</div>
</body>
</html>
Feedback
If you found an error or something which needs to be improved, and you want to contribute to fix it:
If you'd like to suggest something to improve this page: