From 6ee69ffd1c0251029b31833d7d4743a958e8aaca Mon Sep 17 00:00:00 2001 From: "Gerasimos (Makis) Maropoulos" Date: Sun, 30 Aug 2020 16:14:32 +0300 Subject: [PATCH] minor: fix Context.ViewData ignored when nil is passed as view data on Context.View method --- _examples/view/template_handlebars_0/main.go | 16 ++++++++++++++++ context/context.go | 2 +- 2 files changed, 17 insertions(+), 1 deletion(-) diff --git a/_examples/view/template_handlebars_0/main.go b/_examples/view/template_handlebars_0/main.go index c308a59e..0af2dc8f 100644 --- a/_examples/view/template_handlebars_0/main.go +++ b/_examples/view/template_handlebars_0/main.go @@ -4,6 +4,7 @@ import "github.com/kataras/iris/v12" func main() { app := iris.New() + app.Logger().SetLevel("debug") // Init the handlebars engine engine := iris.Handlebars("./templates", ".html").Reload(true) @@ -27,6 +28,21 @@ func main() { ctx.View("example.html", viewData) }) + /* See context-view-data example: Set data through one or more middleware + app.Get("/view_data", func(ctx iris.Context) { + ctx.ViewData("author", map[string]string{"firstName": "Jean", "lastName": "Valjean"}) + ctx.ViewData("body", "Life is difficult") + ctx.ViewData("comments", []iris.Map{{ + "author": map[string]string{"firstName": "Marcel", "lastName": "Beliveau"}, + "body": "LOL!", + }}) + + ctx.Next() + }, func(ctx iris.Context) { + ctx.View("example.html") + }) + */ + // Read more about its syntax at: // https://github.com/aymerick/raymond and // https://handlebarsjs.com/guide diff --git a/context/context.go b/context/context.go index 92d500ff..90a11979 100644 --- a/context/context.go +++ b/context/context.go @@ -2792,7 +2792,7 @@ func (ctx *Context) View(filename string, optionalViewModel ...interface{}) erro layout := ctx.values.GetString(cfg.GetViewLayoutContextKey()) var bindingData interface{} - if len(optionalViewModel) > 0 { + if len(optionalViewModel) > 0 && optionalViewModel[0] != nil { // a nil can override the existing data or model sent by `ViewData`. bindingData = optionalViewModel[0] } else {