狂欢:将模板var传递给url

时间:2014-07-24 12:30:08

标签: templates variables go revel


我想了解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 {

因为我想检查控制器是否包含参数page 如何使用c.Params.Query帮助器将模板var添加到url

1 个答案:

答案 0 :(得分:0)

Revel url helper code in template.go

// 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

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