我目前正在使用虹膜Web框架,并且由于无法在问题跟踪器上提问并且社区聊天已结束,因此我在此提出这一要求是希望有人能帮助我。

我需要将数据传递给c.Render函数

我有一个处理程序,用于检查用户是否已登录。如果未记录,则应在html页面上添加一个额外的按钮

iris.Use(userHandler{})

type userHandler struct{
    Allow bool
}

func (u userHandler) Serve(c *iris.Context) {
    ...
    if isLogged {
        // When I call from another middleware (c.Next) c.Render it should know that the user is logged in
    }
    c.Next()
}

那么是否可以向c.Render函数添加一些默认数据?

最佳答案

// retrieve local storage or previous handler,
// this is how handlers can share values, with the context's Values().
logged := ctx.Values().Get("logged")

// set template data {{.isLogged}}
ctx.ViewData("isLogged", logged)

// and finally, render the mypage.html
ctx.View("mypage.html")

可以通过以下方式将"logged"设置为您的中间件/任何以前的处理程序:
ctx.Values().Set("logged", false)
所有这些都在示例中进行了描述,欢迎您浏览其中的一些示例:https://github.com/kataras/iris/tree/master/_examples

编码愉快!

10-08 14:20