适配器


适配器的作用是实现web框架context与GoAdmin自身context的转换。制作一个adapter需要实现以下方法:

  1. package adapter
  2. import (
  3. "github.com/GoAdminGroup/go-admin/plugins"
  4. "github.com/GoAdminGroup/go-admin/template/types"
  5. )
  6. // WebFrameWork is a interface which is used as an adapter of
  7. // framework and goAdmin. It must implement two methods. Use registers
  8. // the routes and the corresponding handlers. Content writes the
  9. // response to the corresponding context of framework.
  10. type WebFrameWork interface {
  11. Use(interface{}, []plugins.Plugin) error
  12. Content(interface{}, types.GetPanelFn)
  13. SetConnection(db.Connection)
  14. GetConnection() db.Connection
  15. SetContext(ctx interface{}) WebFrameWork
  16. GetCookie() (string, error)
  17. Path() string
  18. Method() string
  19. PjaxHeader() string
  20. Redirect()
  21. SetContentType()
  22. Write(body []byte)
  23. CookieKey() string
  24. HTMLContentType() string
  25. Name() string
  26. User(ci interface{}) (models.UserModel, bool)
  27. SetApp(app interface{}) error
  28. AddHandler(method, path string, plug plugins.Plugin)
  29. }

Use

Use接收两个参数,第一个参数类型为interface{},是web框架的context,第二参数为插件数组。返回值是一个errorUse的作用是利用传入的插件数组,将web框架的路由与将插件数组中的控制器方法关联起来,实现web框架与GoAdmin插件方法的对应。比如插件example中:

  1. "/admin/example" => ShowExample(ctx *context.Context)

通过Use的处理后将注入到web框架中。

Content

Content方法接收两个参数,第一个参数类型为interface{},是web框架的context,第二参数为types.GetPanel类型。

类型如下:

  1. type GetPanel func(ctx interface{}) (Panel, error)

Content的作用就是自定义页面的时候,传入web框架的context,然后往web框架的context写入自定页面内容的返回。

init

init方法往engine中注入该适配器,从而能够被别人去使用。

  1. func init() {
  2. engine.Register(new(Beego))
  3. }

更多请参考:https://github.com/GoAdminGroup/go-admin/tree/master/adapter