相关方法:

  1. func (r *Response) WriteTpl(tpl string, params ...gview.Params) error
  2. func (r *Response) WriteTplContent(content string, params ...gview.Params) error
  3. func (r *Response) WriteTplDefault(params ...gview.Params) error
  4. func (r *Response) ParseTpl(tpl string, params ...gview.Params) (string, error)
  5. func (r *Response) ParseTplContent(content string, params ...gview.Params) (string, error)
  6. func (r *Response) ParseTplDefault(params ...gview.Params) (string, error)

Response 支持模板文件/内容解析输出,或者模板文件/内容解析返回。与直接使用模板对象解析模板功能不同的是, Response 的解析支持一些请求相关的内置变量。模板解析包含以下方法:

  1. WriteTpl* 方法用于模板输出,解析并输出模板文件,也可以直接解析并输出给定的模板内容。
  2. ParseTpl* 方法用于模板解析,解析模板文件或者模板内容,返回解析后的内容。

数据返回-模板解析 - 图1提示

解析模板时组件底层会自动通过 Request 对象获取当前链路的 Context 上下文变量并传递给模板引擎,因此开发者不用显示给模板引擎传递 Context 上下文变量。

内置变量

Config

访问默认的配置管理( config.toml)对象配置项。

使用方式

  1. {{.Config.配置项}}

访问当前请求的 Cookie 对象参数值。

使用方式

  1. {{.Cookie.键名}}

Session

访问当前请求的 Session 对象参数值。

使用方式

  1. {{.Session.键名}}

Query

访问当前 Query String 中的请求参数值。

使用方式

  1. {{.Query.键名}}

Form

访问当前表单请求参数值。

使用方式

  1. {{.Form.键名}}

Request

访问当前请求参数值(不区分参数提交方式)。

使用方式

  1. {{.Request.键名}}

使用示例

  1. package main
  2. import (
  3. "github.com/gogf/gf/v2/frame/g"
  4. "github.com/gogf/gf/v2/net/ghttp"
  5. )
  6. func main() {
  7. s := g.Server()
  8. s.BindHandler("/", func(r *ghttp.Request){
  9. r.Cookie.Set("theme", "default")
  10. r.Session.Set("name", "john")
  11. content :=`Config:{{.Config.redis.cache}}, Cookie:{{.Cookie.theme}}, Session:{{.Session.name}}, Query:{{.Query.name}}`
  12. r.Response.WriteTplContent(content, nil)
  13. })
  14. s.SetPort(8199)
  15. s.Run()
  16. }

其中, config.toml 内容为:

  1. # Redis数据库配置
  2. [redis]
  3. disk = "127.0.0.1:6379,0"
  4. cache = "127.0.0.1:6379,1"

执行后,访问 http://127.0.0.1:8199/?name=john ,输出结果为:

  1. Config:127.0.0.1:6379,1, Cookie:default, Session:john, Query:john