Revel: передать шаблон var в URL


Я хочу понять как url помощник работает. Например, в моем шаблоне у меня есть:

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

и в контроллере:

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

Мне нужен URL как

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

Я не хочу писать:

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

потому что я хочу проверить, если контроллер содержит параметр page,
Как добавить мой шаблон var в c.Params.Query с url помощник?

1 ответ

Revel URL помощник код в 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 Doc.

Как вы заметили, вы можете вручную получить значение для page с page := c.Params.Query.Get("page") если вы не хотите использовать функцию привязки параметров.

Другие вопросы по тегам