Improve this page on GitHub

Global Variables

Variables common to all requests can be added using a base controller using the Prepare method.

Usage examples include the username of the current user for display in a toolbar or the request URL for highlighting active menu items.

First, create a common/base controller in the controllers package:
app_root ├── controllers │ ├── base.go <-- base controller │ └── default.go └── main.go

Your base controller should embed the web.Controller from From here, the Prepare method should be defined, containing any logic required for global variables:
// app_root/controllers/base.go
package controllers

import (



type BaseController struct {



// Runs after Init before request function execution
func (c *BaseController) Prepare() {

c.Data["RequestUrl"] = c.Ctx.Input.URL()


// Runs after request function execution
func (c *BaseController) Finish() {

// Any cleanup logic common to all requests goes here. Logging or metrics, for example.


All other controllers should embed BaseController instead of web.Controller:
// app_root/controllers/default.go
package controllers

type DefaultController struct {



func (c *DefaultController) Index() {

// your controller logic


From here your views can access these global variables, in both individual templates and all parent templates:
gotemplate <div>{{ $.RequestUrl }}</div>

comments powered by Disqus