为了账号安全,请及时绑定邮箱和手机立即绑定

如何使用 Revel / Golang 从控制器设置持久性全局模板变量

如何使用 Revel / Golang 从控制器设置持久性全局模板变量

Go
慕哥6287543 2021-09-10 18:16:54
我是 Golang 的新手,正在从 Node.js 服务器切换到 Golang 服务器,我正在尝试重写我之前为 Node 编写的应用程序。我想在用户登录时设置模板变量,但我不确定如何设置,是的,我试过在谷歌上搜索它。这是我的注册用户控制器:func (c User) RegisterUser(user_email, user_password,    user_password_confirmation, user_first_name,    user_last_name string) revel.Result {    // Validate Email    c.Validation.Required(user_email).Message("Username is required")    c.Validation.Email(user_email).Message("Email is not a valid email")    c.Validation.MinSize(user_email, 5).Message("Email must be greater than 5 characters")    // Validate Password    c.Validation.Required(user_password).Message("Password is required")    c.Validation.MinSize(user_password, 5).Message("Password must be greater than 5 characters.")    // Validate Password Confirmation    c.Validation.Required(user_password_confirmation).Message("Password Confirmation is required")    c.Validation.MinSize(user_password_confirmation, 5).Message("Password must be greater than 5 characters.")    c.Validation.Required(user_password == user_password_confirmation).Message("Your passwords do not match")    // Validate First Name    c.Validation.Required(user_first_name).Message("First Name is required")    c.Validation.MinSize(user_first_name, 3).Message("Your First Name must be greater than 3 characters")    // Validate Last Name    c.Validation.Required(user_last_name).Message("Last Name is required")    c.Validation.MinSize(user_last_name, 3).Message("Your Last Name must be greater than 3 characters")    // If anything wasn't right, set flash and display errors to user    if c.Validation.HasErrors() {        c.Validation.Keep()        c.FlashParams()        return c.Redirect(User.Register)    }我已经读过,c.RenderArgs但它似乎没有做我想要的。我希望能够设置用户的用户名,以便我可以在导航栏中显示它,以便他们知道他们已登录。
查看完整描述

1 回答

?
精慕HU

TA贡献1845条经验 获得超8个赞

如果您正在使用,c.RenderArgs除非我误解了您的意图,否则您是在正确的轨道上。

这是一个关于如何使用它的示例(或者更确切地说,演练)(取自 Revel 的预订示例应用程序):

  1. init.go:注册一个拦截器,在采取行动之前添加用户信息(AddUser将在之前被触发Render)。

  2. app.go:检查用户是否已连接,如果已连接,则将用户的数据存储在RenderArgs地图中,如下所示:

c.RenderArgs["user"] = user

  1. 第 31 行处理模型

  2. header.html:传入用户名模板变量。

我希望这有帮助。

编辑:我可能应该补充一点,用户的用户名在登录时存储在会话中。它用于检索更多信息


查看完整回答
反对 回复 2021-09-10
  • 1 回答
  • 0 关注
  • 207 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信