相关方法:

func (r *Response) WriteTpl(tpl string, params ...gview.Params) error
func (r *Response) WriteTplContent(content string, params ...gview.Params) error
func (r *Response) WriteTplDefault(params ...gview.Params) error
func (r *Response) ParseTpl(tpl string, params ...gview.Params) (string, error)
func (r *Response) ParseTplContent(content string, params ...gview.Params) (string, error)
func (r *Response) ParseTplDefault(params ...gview.Params) (string, error)

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

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

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

内置变量

Config

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

使用方式

{{.Config.配置项}}

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

使用方式

{{.Cookie.键名}}

Session

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

使用方式

{{.Session.键名}}

Query

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

使用方式

{{.Query.键名}}

Form

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

使用方式

{{.Form.键名}}

Request

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

使用方式

{{.Request.键名}}

使用示例

package main

import (
    "github.com/gogf/gf/v2/frame/g"
    "github.com/gogf/gf/v2/net/ghttp"
)

func main() {
    s := g.Server()
    s.BindHandler("/", func(r *ghttp.Request){
        r.Cookie.Set("theme", "default")
        r.Session.Set("name", "john")
        content :=`Config:{{.Config.redis.cache}}, Cookie:{{.Cookie.theme}}, Session:{{.Session.name}}, Query:{{.Query.name}}`
        r.Response.WriteTplContent(content, nil)
    })
    s.SetPort(8199)
    s.Run()
}

其中,config.toml内容为:

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

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

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





Content Menu

  • No labels

8 Comments

  1. ${.Request.URL}为什么没有值呢

      1. 比如访问:http://192.168.0.2:8100/Admin/System/LogList?pid=1

        模板里使用:${.Request.URL},应该打印出http://192.168.0.2:8100/Admin/System/LogList,但实际上没有值

        1. Request不存在URL的键名啊,你是不是把GolangPHP搞混啦。😹

  2. 建议,这个页面应该在模板引擎那里加个连接过来。一直在模板引擎里想找内置变量

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

    如果在自定义模板函数中第一个变量是ctx context.Context,该如何获取该变量呢

  4. 模版里面写的{{.Session.key}},解析完以后显示是一个map[],但是使用g.Dump打印r.Session.MustData()["key"]又是字符串。

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

    中的“显示”

    应该修改成:

    “显式”。