Skip to content

Commit

Permalink
Merge pull request kataras#1117 from chenPengXu/master
Browse files Browse the repository at this point in the history
add part function in html.go and examples
  • Loading branch information
kataras authored Oct 29, 2018
2 parents 4bccfe2 + 0184e08 commit 15bb55d
Show file tree
Hide file tree
Showing 6 changed files with 90 additions and 0 deletions.
31 changes: 31 additions & 0 deletions _examples/view/template_html_5/main.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
package main

import (
"github.com/kataras/iris"
)

func main() {
app := iris.New()

app.RegisterView(iris.HTML("./views", ".html").Layout("layout.html"))
// TIP: append .Reload(true) to reload the templates on each request.

app.Get("/home", func(ctx iris.Context) {
ctx.ViewData("title", "Home page");
ctx.View("home.html")
// Note that: you can pass "layout" : "otherLayout.html" to bypass the config's Layout property
// or view.NoLayout to disable layout on this render action.
// third is an optional parameter
})

app.Get("/about", func(ctx iris.Context) {
ctx.View("about.html")
})

app.Get("/user/index", func(ctx iris.Context) {
ctx.View("user/index.html")
})

// http://localhost:8080
app.Run(iris.Addr(":8080"))
}
15 changes: 15 additions & 0 deletions _examples/view/template_html_5/views/about.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
{{ define "about-head"}}
<title>about page</title>
<style type="text/css">
body {
background: #666;
}
</style>
{{ end }}

{{ define "about-body"}}
extend body content in layout.
{{ end }}
<div>
Hello about page
</div>
11 changes: 11 additions & 0 deletions _examples/view/template_html_5/views/home.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
{{ define "home-head"}}
<title>{{.title}}</title>
<style type="text/css">
body {
background: #999;
}
</style>
{{ end }}
<div>
Hello home page
</div>
11 changes: 11 additions & 0 deletions _examples/view/template_html_5/views/layout.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
<html>
<head>
{{ part "head" }}
</head>
<body>
<h1>[layout] Body content is below...</h1>
{{ part "body" }}
<!-- Render the current template here -->
{{ yield }}
</body>
</html>
10 changes: 10 additions & 0 deletions _examples/view/template_html_5/views/user/index.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
{{ define "user/index-head"}}
<style type="text/css">
body {
background: red;
}
</style>
{{ end }}
<div>
Hello user index page
</div>
12 changes: 12 additions & 0 deletions view/html.go
Original file line number Diff line number Diff line change
Expand Up @@ -44,6 +44,9 @@ var emptyFuncs = template.FuncMap{
"yield": func() (string, error) {
return "", fmt.Errorf("yield was called, yet no layout defined")
},
"part": func() (string, error) {
return "", fmt.Errorf("block was called, yet no layout defined")
},
"partial": func() (string, error) {
return "", fmt.Errorf("block was called, yet no layout defined")
},
Expand Down Expand Up @@ -389,6 +392,15 @@ func (s *HTMLEngine) layoutFuncsFor(name string, binding interface{}) {
// Return safe HTML here since we are rendering our own template.
return template.HTML(buf.String()), err
},
"part": func(partName string) (template.HTML, error) {
nameTemp := strings.Replace(name, ".html", "", -1)
fullPartName := fmt.Sprintf("%s-%s", nameTemp, partName)
buf, err := s.executeTemplateBuf(fullPartName, binding)
if err != nil {
return "", nil
}
return template.HTML(buf.String()), err
},
"current": func() (string, error) {
return name, nil
},
Expand Down

0 comments on commit 15bb55d

Please sign in to comment.