基本使用


使用命令行将sql表生成一个数据表单类型,如:

  1. CREATE TABLE `users` (
  2. `id` int(11) unsigned NOT NULL AUTO_INCREMENT,
  3. `name` varchar(50) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
  4. `gender` tinyint(4) DEFAULT NULL,
  5. `city` varchar(50) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
  6. `ip` varchar(20) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
  7. `phone` varchar(10) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
  8. `created_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
  9. `updated_at` timestamp NULL DEFAULT NULL,
  10. PRIMARY KEY (`id`)
  11. ) ENGINE=InnoDB AUTO_INCREMENT=0 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

生成了:

  1. package datamodel
  2. import (
  3. ...
  4. )
  5. func GetUserTable() (userTable table.Table) {
  6. // config the table model.
  7. userTable = table.NewDefaultTable(...)
  8. ...
  9. formList := userTable.GetForm()
  10. // set id editable is false.
  11. formList.AddField("ID", "id", db.Int, form.Default).FieldNotAllowEdit()
  12. formList.AddField("Ip", "ip", db.Varchar, form.Text)
  13. formList.AddField("Name", "name", db.Varchar, form.Text)
  14. ...
  15. return
  16. }

类型

  • 默认,只显示 Default
  • 普通文本 Text
  • 单选 SelectSingle
  • 密码 Password
  • 富文本 RichText
  • 文件 File
  • 双选择框 SelectBox
  • 多选 Select
  • icon下拉选择框 IconPicker
  • 时间选择框 Datetime
  • radio选择框 Radio
  • email输入框 Email
  • url输入框 Url
  • ip输入框 Ip
  • 颜色选择框 Color
  • 货币输入框 Currency
  • 数字输入框 Number

例子:

  1. import (
  2. ...
  3. "github.com/GoAdminGroup/go-admin/template/types/form"
  4. ...
  5. )
  6. func GetxxxTable() table.Table {
  7. formList.AddField("ID", "id", db.Int, form.Default)
  8. }

操作

添加字段

  1. // 添加一个字段,字段标题为 ID,字段名为 id,字段类型为 int,表单类型为 Default
  2. formList.AddField("ID", "id", db.Int, form.Default)
  3. // 添加第二个字段,字段标题为 Ip,字段名为 ip,字段类型为 varchar,表单类型为 Text
  4. formList.AddField("Ip", "ip", db.Varchar, form.Text)
  5. // 添加第三个字段,一个sql表不存在的字段
  6. formList.AddField("Custom", "custom", db.Varchar, form.Text)

设置默认值

  1. formList.AddField("header", "header", db.Varchar, form.Text).FieldDefault("header")

设置为必须输入

  1. formList.AddField("header", "header", db.Varchar, form.Text).FieldMust()

设置帮助信息

  1. formList.AddField("header", "header", db.Varchar, form.Text).FieldHelpMsg("长度应该大于5")

不允许编辑

  1. formList.AddField("id", "id", db.Int, form.Default).FieldNotAllowEdit()

不允许新增

  1. formList.AddField("id", "id", db.Int, form.Default).FieldNotAllowAdd()

提交前对字段进行过滤处理

  1. formList.AddField("链接", "url", db.Varchar, form.Text).
  2. FieldPostFilterFn(func(value types.PostFieldModel) string {
  3. return "http://xxxx.com/" + value.Get("url")
  4. })

显示过滤处理

  1. // 限制长度
  2. formList.AddField("链接", "url", db.Varchar, form.Text).FieldLimit(limit int)
  3. // 去除空格
  4. formList.AddField("链接", "url", db.Varchar, form.Text).FieldTrimSpace()
  5. // 截取
  6. formList.AddField("链接", "url", db.Varchar, form.Text).FieldSubstr(start int, end int)
  7. // 标题
  8. formList.AddField("链接", "url", db.Varchar, form.Text).FieldToTitle()
  9. // 大写
  10. formList.AddField("链接", "url", db.Varchar, form.Text).FieldToUpper()
  11. // 小写
  12. formList.AddField("链接", "url", db.Varchar, form.Text).FieldToLower()
  13. // xss过滤
  14. formList.AddField("链接", "url", db.Varchar, form.Text).FieldXssFilter()

插入/新增逻辑重写

如果你的表单插入操作与新增操作比较复杂,框架不能满足,那么你可以完全重写并取代框架的插入操作。

  1. // 取代新增函数
  2. formList.SetInsertFn(func(values form2.Values) error {
  3. // values 为传入的表单参数
  4. })
  5. // 取代更新函数
  6. formList.SetUpdateFn(func(values form2.Values) error {
  7. // values 为传入的表单参数
  8. })