控制器
在本章节中,我们将学习控制器是如何工作的,以及如何生成控制器。
什么是控制器
控制器就是MVC中C的部分,他负责路由所对应的逻辑实现部分,负责返回正确的响应。
在Buffalo中,我们正常称控制器为actions。
定义一个action
Buffalo的action函数都是buffalo#Handler 函数,
func Home(c buffalo.Context) error {
return c.Render(200, r.HTML("home.html"))
}
在本例中,我们定义了一个叫Home的action,从home.html模板渲染内容返回,并且返回的http状态为200。
每个action都接受一个buffalo.Context作为参数。通过他我们可以获取到本次request的上下文信息。看 上下文 章节了解上下文相关内容。
自动生成action
Buffalo提供了一个工具帮我们自动生成action模板内容。减少我们重复的冗余的劳动。
查看帮助,看看怎么使用此工具
$ buffalo g action --help
Generates new action(s)
Usage:
buffalo generate action [name] [actionName...] [flags]
Aliases:
action, a, actions
通过buffalo g action [name] [actionName...]
$ buffalo g action users show index create
--> templates/users/show.html
--> templates/users/index.html
--> templates/users/create.html
--> actions/users.go
--> actions/users_test.go
--> goimports -w .
有时候我们需要指定http方法。
$ buffalo g action users message --method POST
也可以通过指定 --skip-template 标识,告诉系统不用生成模板文件。
$ buffalo g action users update --skip-template
销毁action
删除已经存在的action
$ buffalo destroy action users
或者通过别名
$ buffalo d a users