這個flash與 Adobe/Macromedia Flash沒有任何關係,它主要用於在兩個邏輯間傳遞臨時數據,html
flash中存放的全部數據會在緊接着的下一個邏輯中調用後清除。函數
通常用於傳遞提示和錯誤消息。它適合 Post/Redirect/Get 模式。code
下面看使用的例子:orm
// 顯示設置信息 func (c *MainController) Get() { flash:=beego.ReadFromRequest(&c.Controller) if n,ok:=flash.Data["notice"];ok{ // 顯示設置成功 c.TplName = "set_success.html" }else if n,ok=flash.Data["error"];ok{ // 顯示錯誤 c.TplName = "set_error.html" }else{ // 否則默認顯示設置頁面 c.Data["list"]=GetInfo() c.TplName = "setting_list.html" } } // 處理設置信息 func (c *MainController) Post() { flash:=beego.NewFlash() setting:=Settings{} valid := Validation{} c.ParseForm(&setting) if b, err := valid.Valid(setting);err!=nil { flash.Error("Settings invalid!") flash.Store(&c.Controller) c.Redirect("/setting",302) return }else if b!=nil{ flash.Error("validation err!") flash.Store(&c.Controller) c.Redirect("/setting",302) return } saveSetting(setting) flash.Notice("Settings saved!") flash.Store(&c.Controller) c.Redirect("/setting",302) }
上面的代碼執行的大概邏輯是這樣的:htm
默認狀況下 ReadFromRequest
函數已經實現了讀取的數據賦值給 flash,因此在你的模板裏面你能夠這樣讀取數據:對象
{{.flash.error}} {{.flash.warning}} {{.flash.notice}}
flash 對象有三個級別的設置:blog