模型用于自定义字段、自定义表单并自动生成数据表,可以根据自身需求,创建不同的内容模型,存储不同的内容,从而达到你的需求目的。
使用方式
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
最后编辑:管理员 更新时间:2023-01-09 16:49