3


我想了解url助手的工作原理。例如,在我的模板中,我有:

<a href="{{url "Pages.IndexPages" ???}}">my super url</a>

在控制器中:

func (c Pages) IndexPages() revel.Result {
    ...
}

我需要像这样的网址

http://localhost:9000/pages?page=1

我不想写:

func (c Pages) IndexPages(page int) revel.Result {

因为我想检查控制器是否包含 param page
如何c.Params.Query使用url助手添加我的模板变量?

4

1 回答 1

1

在 template.go 中狂欢 url 帮助代码

// Return a url capable of invoking a given controller method:
// "Application.ShowApp 123" => "/app/123"
func ReverseUrl(args ...interface{}) (template.URL, error) {

我们需要使用有关此模板功能的信息来更新手册,但您可以在上面的链接和代码中看到它是如何使用的。您将控制器和带有参数的操作传递给它,它会创建一个template.URL具有匹配路由的对象。

看来您对url助手的工作方式不感兴趣(尽管这是您所要求的)。您想知道如何将page变量传递给模板吗?在您的控制器中,您需要page通过c.RenderArgs["page"] = page. 然后你可以在你的模板中引用它:<a href="{{url "Pages.IndexPages" .page}}">my super url</a> Revel Template Doc

如您所述,如果您不想使用参数绑定功能,可以手动获取pagewith的值。page := c.Params.Query.Get("page")

于 2014-10-30T00:25:32.207 回答