Skip to main content

Forms

Forms is the way to build your edit functionality in uadmin admin panel. Later it could be used for non admin too. But nowadays it's not usual to use multipart/form-data in the projects. It has following structure.

type Form struct {    // in use only when we build form, probably could be removed later    ExcludeFields       IFieldRegistry    // in use only when we build form, probably could be removed later    FieldsToShow        IFieldRegistry    FieldRegistry       IFieldRegistry    // in use only when we render form, probably could be removed later    GroupsOfTheFields   *GrouppedFieldsRegistry    // template name, if empty default would be used    TemplateName        string    // form title    FormTitle           string    // form renderer    Renderer            ITemplateRenderer    // request context    RequestContext      map[string]interface{}    // error message, maybe removed later    ErrorMessage        string    // could be used like below:    // form.ExtraStatic.ExtraJS = append(form.ExtraStatic.ExtraJS, "/static-inbuilt/uadmin/assets/highlight.js/highlight.pack.js")    // form.ExtraStatic.ExtraJS = append(form.ExtraStatic.ExtraJS, "/static-inbuilt/uadmin/assets/js/initialize.highlight.js")    // form.ExtraStatic.ExtraCSS = append(form.ExtraStatic.ExtraCSS, "/static-inbuilt/uadmin/assets/highlight.js/styles/default.css")    ExtraStatic         *StaticFiles `json:"-"`    // if it's true, all fields and its widgets would be rendered as for admin panel.    ForAdminPanel       bool    // form error, it contains all field errors, general errors    FormError           *FormError    DontGenerateFormTag bool    // used to render field names    Prefix              string    // render context    RenderContext       *FormRenderContext}

The easiest way to create form for Gorm models is to use function NewFormFromModelFromGinContext, like here:

fields := []string{"ContentType", "Type", "Name", "Field", "PrimaryKey", "Active", "Group", "StaticPath"}form := core.NewFormFromModelFromGinContext(ctx, modelI, make([]string, 0), fields, true, "", true)// ormodelForm := NewFormFromModel(model, []string{}, []string{}, false, "")