beego support flash data
Showing
2 changed files
with
59 additions
and
3 deletions
| ... | @@ -58,7 +58,6 @@ func (c *Controller) Init(ctx *Context, cn string) { | ... | @@ -58,7 +58,6 @@ func (c *Controller) Init(ctx *Context, cn string) { |
| 58 | c.ChildName = cn | 58 | c.ChildName = cn |
| 59 | c.Ctx = ctx | 59 | c.Ctx = ctx |
| 60 | c.TplExt = "tpl" | 60 | c.TplExt = "tpl" |
| 61 | |||
| 62 | } | 61 | } |
| 63 | 62 | ||
| 64 | func (c *Controller) Prepare() { | 63 | func (c *Controller) Prepare() { | ... | ... |
| ... | @@ -15,7 +15,7 @@ | ... | @@ -15,7 +15,7 @@ |
| 15 | - [request处理](#request%E5%A4%84%E7%90%86) | 15 | - [request处理](#request%E5%A4%84%E7%90%86) |
| 16 | - [跳转和错误](#%E8%B7%B3%E8%BD%AC%E5%92%8C%E9%94%99%E8%AF%AF) | 16 | - [跳转和错误](#%E8%B7%B3%E8%BD%AC%E5%92%8C%E9%94%99%E8%AF%AF) |
| 17 | - [response处理](#response%E5%A4%84%E7%90%86) | 17 | - [response处理](#response%E5%A4%84%E7%90%86) |
| 18 | - [Sessions](#sessions) | 18 | - [Sessions/Flash](#sessions/flash) |
| 19 | - [Cache设置](#cache%E8%AE%BE%E7%BD%AE) | 19 | - [Cache设置](#cache%E8%AE%BE%E7%BD%AE) |
| 20 | - [安全的Map](#%E5%AE%89%E5%85%A8%E7%9A%84map) | 20 | - [安全的Map](#%E5%AE%89%E5%85%A8%E7%9A%84map) |
| 21 | - [日志处理](#%E6%97%A5%E5%BF%97%E5%A4%84%E7%90%86) | 21 | - [日志处理](#%E6%97%A5%E5%BF%97%E5%A4%84%E7%90%86) |
| ... | @@ -660,7 +660,7 @@ response可能会有几种情况: | ... | @@ -660,7 +660,7 @@ response可能会有几种情况: |
| 660 | this.Ctx.WriteString("ok") | 660 | this.Ctx.WriteString("ok") |
| 661 | 661 | ||
| 662 | 662 | ||
| 663 | ## Sessions | 663 | ## Sessions/Flash |
| 664 | 664 | ||
| 665 | beego内置了session模块,目前session模块支持的后端引擎包括memory、file、mysql、redis四中,用户也可以根据相应的interface实现自己的引擎。 | 665 | beego内置了session模块,目前session模块支持的后端引擎包括memory、file、mysql、redis四中,用户也可以根据相应的interface实现自己的引擎。 |
| 666 | 666 | ||
| ... | @@ -746,7 +746,64 @@ sess对象具有如下方法: | ... | @@ -746,7 +746,64 @@ sess对象具有如下方法: |
| 746 | beego.SessionProvider = "redis" | 746 | beego.SessionProvider = "redis" |
| 747 | beego.SessionSavePath = "127.0.0.1:6379" | 747 | beego.SessionSavePath = "127.0.0.1:6379" |
| 748 | 748 | ||
| 749 | 这个flash与Adobe/Macromedia Flash没有任何关系。它主要用于在两个逻辑间传递临时数据,flash中存放的所有数据会在紧接着的下一个逻辑中调用后清除。一般用于传递提示和错误消息。它适合[Post/Redirect/Get](http://en.wikipedia.org/wiki/Post/Redirect/Get)模式。下面看使用的例子 | ||
| 750 | |||
| 751 | // 显示设置信息 | ||
| 752 | func (c *MainController) Get() { | ||
| 753 | flash:=beego.ReadFromRequest(c) | ||
| 754 | if n,ok:=flash.Data["notice"];ok{ | ||
| 755 | //显示设置成功 | ||
| 756 | c.TplNames = "set_success.html" | ||
| 757 | }else if n,ok=flash.Data["error"];ok{ | ||
| 758 | //显示错误 | ||
| 759 | c.TplNames = "set_error.html" | ||
| 760 | }else{ | ||
| 761 | // 不然默认显示设置页面 | ||
| 762 | this.Data["list"]=GetInfo() | ||
| 763 | c.TplNames = "setting_list.html" | ||
| 764 | } | ||
| 765 | } | ||
| 766 | |||
| 767 | // 处理设置信息 | ||
| 768 | func (c *MainController) Post() { | ||
| 769 | flash:=beego.NewFlash() | ||
| 770 | setting:=Settings{} | ||
| 771 | valid := Validation{} | ||
| 772 | c.ParseForm(&setting) | ||
| 773 | if b, err := valid.Valid(setting);err!=nil { | ||
| 774 | flash.Error("Settings invalid!") | ||
| 775 | flash.Store(c) | ||
| 776 | c.Redirect("/setting",302) | ||
| 777 | return | ||
| 778 | }else if b!=nil{ | ||
| 779 | flash.Error("validation err!") | ||
| 780 | flash.Store(c) | ||
| 781 | c.Redirect("/setting",302) | ||
| 782 | return | ||
| 783 | } | ||
| 784 | saveSetting(setting) | ||
| 785 | flash.Notice("Settings saved!") | ||
| 786 | flash.Store(c) | ||
| 787 | c.Redirect("/setting",302) | ||
| 788 | } | ||
| 789 | |||
| 790 | 上面的代码执行的大概逻辑是这样的: | ||
| 791 | |||
| 792 | 1. Get方法执行,因为没有flash数据,所以显示设置页面 | ||
| 793 | 2. 用户设置信息之后点击递交,执行Post,然后初始化一个flash,通过验证,验证出错或者验证不通过设置flash的错误,如果通过了就保存设置,然后设置flash成功设置的信息。 | ||
| 794 | 3. 设置完成后跳转到Get请求 | ||
| 795 | 4. Get请求获取到了Flash信息,然后执行相应的逻辑,如果出错显示出错的页面,如果成功显示成功的页面。 | ||
| 796 | |||
| 797 | 默认情况下`ReadFromRequest`函数已经实现了读取的数据赋值给flash,所以在你的模板里面你可以这样读取数据 | ||
| 798 | |||
| 799 | {{.flash.error}} | ||
| 800 | {{.flash.warning}} | ||
| 801 | {{.flash.notice}} | ||
| 749 | 802 | ||
| 803 | flash对象有三个级别的设置: | ||
| 804 | * Notice提示信息 | ||
| 805 | * Warning警告信息 | ||
| 806 | * Error错误信息 | ||
| 750 | ## Cache设置 | 807 | ## Cache设置 |
| 751 | 808 | ||
| 752 | beego内置了一个cache模块,实现了类似memcache的功能,缓存数据在内存中,主要的使用方法如下: | 809 | beego内置了一个cache模块,实现了类似memcache的功能,缓存数据在内存中,主要的使用方法如下: | ... | ... |
-
Please register or sign in to post a comment