mirror of
https://github.com/kataras/iris.git
synced 2025-01-23 02:31:04 +01:00
examples: add an example for #2019
This commit is contained in:
parent
1ea5cd58be
commit
de8883fc98
|
@ -512,7 +512,7 @@ $ go get github.com/kataras/iris/v12@master
|
||||||
**Run**
|
**Run**
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
$ go mod tidy -compat=1.19
|
$ go mod tidy -compat=1.19 # -compat="1.19" for windows.
|
||||||
$ go run .
|
$ go run .
|
||||||
```
|
```
|
||||||
|
|
||||||
|
|
|
@ -475,7 +475,7 @@ $ go get github.com/kataras/iris/v12@master
|
||||||
**Run**
|
**Run**
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
$ go mod tidy -compat=1.19
|
$ go mod tidy -compat=1.19 # -compat="1.19" for windows.
|
||||||
$ go run .
|
$ go run .
|
||||||
```
|
```
|
||||||
|
|
||||||
|
|
|
@ -1,6 +1,17 @@
|
||||||
package main
|
package main
|
||||||
|
|
||||||
import "github.com/kataras/iris/v12"
|
import (
|
||||||
|
"html/template"
|
||||||
|
"time"
|
||||||
|
|
||||||
|
"github.com/kataras/iris/v12"
|
||||||
|
)
|
||||||
|
|
||||||
|
// ViewFunctions presents some builtin functions
|
||||||
|
// for html view engines. See `View.Funcs` or `view/html.Funcs` and etc.
|
||||||
|
var Functions = template.FuncMap{
|
||||||
|
"Now": time.Now,
|
||||||
|
}
|
||||||
|
|
||||||
func main() {
|
func main() {
|
||||||
app := iris.New()
|
app := iris.New()
|
||||||
|
@ -13,7 +24,8 @@ func main() {
|
||||||
// - {{ yield . }}
|
// - {{ yield . }}
|
||||||
// - {{ current . }}
|
// - {{ current . }}
|
||||||
app.RegisterView(iris.HTML("./templates", ".html").
|
app.RegisterView(iris.HTML("./templates", ".html").
|
||||||
Reload(true)) // Set Reload false to production.
|
Funcs(Functions). // Optionally register some more builtin functions.
|
||||||
|
Reload(false)) // Set Reload to true on development.
|
||||||
|
|
||||||
app.Get("/", func(ctx iris.Context) {
|
app.Get("/", func(ctx iris.Context) {
|
||||||
// enable compression based on Accept-Encoding (e.g. "gzip"),
|
// enable compression based on Accept-Encoding (e.g. "gzip"),
|
||||||
|
@ -30,13 +42,15 @@ func main() {
|
||||||
})
|
})
|
||||||
|
|
||||||
app.Get("/example_map", func(ctx iris.Context) {
|
app.Get("/example_map", func(ctx iris.Context) {
|
||||||
if err := ctx.View("example.html", iris.Map{
|
examplePage := iris.Map{
|
||||||
"Name": "Example Name",
|
"Name": "Example Name",
|
||||||
"Age": 42,
|
"Age": 42,
|
||||||
"Items": []string{"Example slice entry 1", "entry 2", "entry 3"},
|
"Items": []string{"Example slice entry 1", "entry 2", "entry 3"},
|
||||||
"Map": iris.Map{"map key": "map value", "other key": "other value"},
|
"Map": iris.Map{"map key": "map value", "other key": "other value"},
|
||||||
"Nested": iris.Map{"Title": "Iris E-Book", "Pages": 620},
|
"Nested": iris.Map{"Title": "Iris E-Book", "Pages": 620},
|
||||||
}); err != nil {
|
}
|
||||||
|
|
||||||
|
if err := ctx.View("example.html", examplePage); err != nil {
|
||||||
ctx.HTML("<h3>%s</h3>", err.Error())
|
ctx.HTML("<h3>%s</h3>", err.Error())
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
@ -71,6 +85,23 @@ func main() {
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
|
app.Get("/functions", func(ctx iris.Context) {
|
||||||
|
var functionsPage = struct {
|
||||||
|
// A function.
|
||||||
|
Now func() time.Time
|
||||||
|
// A struct field which contains methods.
|
||||||
|
Ctx iris.Context
|
||||||
|
}{
|
||||||
|
Now: time.Now,
|
||||||
|
Ctx: ctx,
|
||||||
|
}
|
||||||
|
|
||||||
|
if err := ctx.View("functions.html", functionsPage); err != nil {
|
||||||
|
ctx.HTML("<h3>%s</h3>", err.Error())
|
||||||
|
return
|
||||||
|
}
|
||||||
|
})
|
||||||
|
|
||||||
// http://localhost:8080/
|
// http://localhost:8080/
|
||||||
app.Listen(":8080")
|
app.Listen(":8080")
|
||||||
}
|
}
|
||||||
|
|
3
_examples/view/overview/templates/functions.html
Normal file
3
_examples/view/overview/templates/functions.html
Normal file
|
@ -0,0 +1,3 @@
|
||||||
|
<h1>Function: {{ Now }}</h1>
|
||||||
|
<h1>Field: {{ .Ctx.Request.URL.Path }} </h1>
|
||||||
|
<h1>Field Struct's Function (Method): {{ .Ctx.FullRequestURI }} </h1>
|
3
iris.go
3
iris.go
|
@ -82,7 +82,7 @@ type Application struct {
|
||||||
minifier *minify.M
|
minifier *minify.M
|
||||||
|
|
||||||
// view engine
|
// view engine
|
||||||
view view.View
|
view *view.View
|
||||||
// used for build
|
// used for build
|
||||||
builded bool
|
builded bool
|
||||||
defaultMode bool
|
defaultMode bool
|
||||||
|
@ -120,6 +120,7 @@ func New() *Application {
|
||||||
Router: router.NewRouter(),
|
Router: router.NewRouter(),
|
||||||
I18n: i18n.New(),
|
I18n: i18n.New(),
|
||||||
minifier: newMinifier(),
|
minifier: newMinifier(),
|
||||||
|
view: new(view.View),
|
||||||
}
|
}
|
||||||
|
|
||||||
logger := newLogger(app)
|
logger := newLogger(app)
|
||||||
|
|
16
view/view.go
16
view/view.go
|
@ -2,6 +2,7 @@ package view
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"fmt"
|
"fmt"
|
||||||
|
"html/template"
|
||||||
"io"
|
"io"
|
||||||
"strings"
|
"strings"
|
||||||
|
|
||||||
|
@ -76,6 +77,21 @@ func (v *View) AddFunc(funcName string, funcBody interface{}) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Funcs registers a template func map to the registered view engine(s).
|
||||||
|
func (v *View) Funcs(m template.FuncMap) *View {
|
||||||
|
if !v.Registered() {
|
||||||
|
return v
|
||||||
|
}
|
||||||
|
|
||||||
|
if e, ok := v.Engine.(EngineFuncer); ok {
|
||||||
|
for k, v := range m {
|
||||||
|
e.AddFunc(k, v)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return v
|
||||||
|
}
|
||||||
|
|
||||||
// Load compiles all the registered engines.
|
// Load compiles all the registered engines.
|
||||||
func (v *View) Load() error {
|
func (v *View) Load() error {
|
||||||
if !v.Registered() {
|
if !v.Registered() {
|
||||||
|
|
Loading…
Reference in New Issue
Block a user