Задать вопрос
dmnBrest
@dmnBrest
Salesforce for money. Python, Go, Ruby for soul.

Как получить доступ к общим данным в template?

Привет всем.

Понимаю что вопрос нубский и за время существования Go задавался не раз, но почему-то не могу нагуглить ни одного нормально и простого объяснения.

Пробую сделать простейшее web приложение на go.
использую gorilla (mux, context, session) и unrolled/render для регдеренга темплейтов.

Во всех примерах данные в темплейт передаются через структуру или мапу которая передается в функцию рендеренга - тут все понятно.

Что делать с данными которые мне нужны на каждой странице? Какой есть элегантный способ получить доступ к тому же context в template?

Типичный пример: текущий пользователь. Как мне получить его в template чтобы каждый раз не передавать явно в мапе с данными для каждого шаблона.

Спасибо!
  • Вопрос задан
  • 165 просмотров
Подписаться 1 Оценить Комментировать
Решения вопроса 1
@kshvakov
Напишите функцию в которую передаете контекст и данные для рендера, в ней из контекста "дергайте" то что нужно всегда, добавляйте их к тем данным что пришли и в рендер пихайте, примерно так:

func HTML(c *Context, name string, data map[string]interface{}) {

	if data == nil {

		data = make(map[string]interface{})
	}

	data["CurrentUser"] = c.Get("CurrentUser")

	render.HTML(c, name, data)
}
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы