模型用于自定义字段、自定义表单并自动生成数据表,可以根据自身需求,创建不同的内容模型,存储不同的内容,从而达到你的需求目的。

使用方式

1. 创建模型分类

2. 添加模型

添加模型选择对应的分类,模型标识是对应后面生成的数据表,最好使用具有实际意义的英文字母便于维护。

3. 添加模型字段


添加字段并设置字段属性,字段顺序可以拖拽排序,设置完成后保存,然后返回模型列表点击“生成模型”后生成对应的数据表。

4. 文章中使用当前建立的模型

打开字典管理 进入文章栏目模型分类 添加创建的分类

5.添加文章栏目选择对应模型

6. 添加文章选择栏目后自动生成模型字段表单


模型的二次开发

1. 后端

模型服务文件位于 ./app/service/common/com_model_service/model.go 文件。
例如获取文章栏目所属模型选项:

func (c *CmsMenu) ModelOptions(r *ghttp.Request) {
    //栏目模型分类
    modelOptions, err := dict_service.GetDictWithDataByType("cms_cate_models", "", "")
    if err != nil {
        response.FailJson(true, r, err.Error())
    }
    values := gconv.SliceAny(modelOptions["values"])
    keys := make([]int, len(values))
    for k, val := range values {
        data := gconv.Map(val)
        keys[k] = gconv.Int(data["key"])
    }
    //获取对应模型
    models, err := model_service.GetModelsByCateIds(keys)
    if err != nil {
        response.FailJson(true, r, err.Error())
    }
    response.SusJson(true, r, "ok", models)
}

获取模型字段生成表单的数据:

func (c *CmsNews) GetModelFields(r *ghttp.Request) {
    //获取栏目ID
    cateIds := r.GetInts("cateIds")
    //文章id
    newsId := r.GetInt64("newsId")
    res, err := cms_service.GetModelFieldsByCateIds(r, cateIds, newsId)
    if err != nil {
        response.FailJson(true, r, err.Error())
    }
    response.SusJson(true, r, "ok", res)
}

2. 前端

前端使用的是form-create
使用手册参考:http://www.form-create.com/
已对from-create 进行了组件封装,使用方法:

<template>
    <CF :rule="createFormRules" ref="cf" />    
</template>
import CF from "@/components/createForm";
export default {
      components: { CF},
    data:{
        return {
            createFormRules: [],
        }
    },

    ...
    methods:{
        //加载模型
        loadModel() {
          this.createFormRules = []
          if (this.form.cateIds.length == 0) {
            return;
          }
          //加载模型
          loadNewsModel(this.form.cateIds, this.form.id)
            .then((response) => {
              if (this.isJump) {
                response.data.map((item) => {
                  if (item.field == "news_content") {
                    item.hidden = true;
                  }
                });
              }
              this.createFormRules = response.data;
            })
            .catch((err) => {
              this.form.cateIds = [];
            });
        }
    }
作者:管理员  创建时间:2023-01-09 16:48
最后编辑:管理员  更新时间:2023-01-09 16:49