搭建完beego框架后,我们开始写自己的应用和需求。
目前要做的需求是预约功能,注册功能,日历功能。
创建新功能
第一步,在controllers文件夹里面新建三个功能的go程序
初始代码就直接复制default.go,改一下名字就好
router.go添加三个功能对应页面的路由:
package routers
import (
"github.com/astaxie/beego"
"webBack/controllers"
)
func init() {
beego.Router("/", &controllers.MainController{})
beego.Router("/book", &controllers.BookController{})
beego.Router("/calendar", &controllers.CalendarController{})
beego.Router("/register", &controllers.RegisterController{})
}
新建utils文件夹,放入功能函数的代码
views建立三个功能的前端页面
好了,现在localhost:8080/book就对应着book.tpl和它的功能了,另外的两个也是类似。
扫描二维码关注公众号,回复:
6114488 查看本文章
数据交互
以book为例,我们做一个预约的简易前端book.tpl
boot.tpl中有如下表单,在下面这个表单中,定义了一些变量
<form name="book" onsubmit="return CheckPost();">
手机号:<input name="phone" type="text" />
时间:<input name="time" type="text" />
房间:<input name="room" type="text" />
<input type="submit" value="提交"/>
</form>
我们同样在models里面的model.go定义如下结构体,beego能够直接根据表单元素的名字获取值
type Book struct {
Phone string `form:"phone"`
Time string `form:"time"`
Room string `form:"room"`
}
controllers里的book.go进行数据处理,记得submit默认是Get()方法,那我们重写Get()方法:
func (c *BookController) Get() {
c.TplName = "book.tpl"
bookInfo := models.Book{}
if err := c.ParseForm(&bookInfo); err != nil {
panic(err) //handle error
}
if len(bookInfo.Phone) == 11 && bookInfo.Time != "" && bookInfo.Room != ""{
fmt.Println(bookInfo.Phone + " " + bookInfo.Time + " " + bookInfo.Room)
utils.GenerateKey(bookInfo.Phone, bookInfo.Time, bookInfo.Room)
utils.GenerateData(bookInfo.Phone, bookInfo.Time, bookInfo.Room)
utils.GenerateQR(bookInfo.Phone)
c.Post()
}
}
记得检查数据是否合法
这样子,一个简易的前后端交互就完成了。
测试
打开localhost:8080/book,转到book.tpl界面,有如下表单,填写信息:
点击提交,控制台打印如下信息,可以看到已经收到前面传来的信息
那就继续执行几个功能可以看到主要文件也已经生成
ECC加密后的串,密钥串,以及二维码等
这样,基本的前后端交互就完成了。