Generated forms turn a tagged struct into a working editor. Option-provider methods and list-level overrides let you keep the generated form while still adapting it to runtime data.
paw.Gen()paw.KvConvert()paw.List.SelectOptions()paw.List.BitMaskOptions()paw.List.Readonly()API 接口 |
Description 说明 |
|---|---|
Gen(struct) |
Generates a List of controls from exported struct fields with paw tags. 根据带 paw tag 的导出字段生成控件列表。 |
KvConvert(map[string]string, *struct) |
Writes submitted values back into a struct, including time and sql.Null* values. 把提交值写回结构体,包括时间类型和 sql.Null* 类型。 |
List.SelectOptions(...) |
Overrides or injects Select options by field name. 按字段名覆盖或注入 Select 选项。 |
List.BitMaskOptions(...) |
Overrides or injects BitMask options by field name. 按字段名覆盖或注入 BitMask 选项。 |
List.RichTextEditorConfig(...) |
Applies upload config to generated rich text editor fields. 为生成式富文本字段应用上传配置。 |
List.Readonly() |
Transforms generated controls into a display-only view. 把生成出的控件转换成只读展示视图。 |
Field tags define the widget type, labels, and time formatting while PawOptions methods provide default options.
type MemberForm struct {
ID uint `paw:"hidden"`
Name string `paw:"" pawLabel:"Name"`
Role string `paw:"select" pawLabel:"Role"`
Enabled bool `paw:"" pawLabel:"Enabled"`
Permissions uint64 `paw:"bitmask" pawLabel:"Permissions"`
Notes string `paw:"textarea:120" pawLabel:"Notes"`
ReviewDate time.Time `paw:"" pawLabel:"Review date" pawTimeFormat:"2006-01-02"`
Owner sql.NullString `paw:"" pawLabel:"Owner"`
}
func (MemberForm) RolePawOptions() []paw.SelectOption { ... }
func (MemberForm) PermissionsPawOptions() []paw.BitMaskOption { ... }
paw.Form{Body: paw.Gen(member)}
KvConvert round-trips submitted values into a struct, while list-level helpers adapt generated controls to runtime data.
Updated from submitted values.
converted := MemberForm{}
paw.KvConvert(map[string]string{
"Name": "Grace Hopper",
"Role": "admin",
"Permissions": "7",
"ReviewDate": time.Now().Format(paw.TimeFormatDate),
}, &converted)
readonly := paw.Gen(converted).Readonly()
generated := paw.Gen(member).
SelectOptions(map[string][]paw.SelectOption{...}).
BitMaskOptions(map[string][]paw.BitMaskOption{...})
editor := paw.Gen(article).
RichTextEditorConfig(paw.RichTextEditorConfig{
UploadServer: "/AttachmentUpload",
UploadFieldName: uploadFieldName,
UploadMaxFileSize: uploadFileMaxSize,
})
Fields without a paw tag are ignored, and unexported fields are ignored as well.
Option-provider methods follow the FieldName + PawOptions naming convention and can use either value or pointer receivers.
KvConvert supports time.Time, *time.Time, sql.NullTime, sql.NullBool, sql.NullString, sql.NullFloat64, sql.NullInt16, sql.NullInt32, and sql.NullInt64 in addition to the basic scalar types.