数据库字段备注信息声明语法 CDL (Comment Declaration Language) - V2.0
说明:2.0 相比 1.0,主要是采用了JSON数据格式,支持更多配置内容
语法V1.0:
[cdl:disable] 禁用,当前不可用。
[cdl:component=checkbox] 控件类型,详见附1。
[cdl:search=like,=] 是否允许搜索,支持操作符:=,>=,<=,like,null,not_null。默认根据字段数据类型使用贪婪模式。
[cdl:display=index] 显示范围:list=列表,create=新建表单,edit=编辑表单,all=全部,none=无,默认 all。
[cdl:required] 必填字段,详见附2。
语法V2.0:
[cdl:json={"disable":true}] 禁用,当前不可用。
[cdl:json={"component":"checkbox"}] 控件类型,详见附1。
[cdl:json={"searchable":true,"operate":"like,="}] 是否允许搜索,支持操作符:=,>=,<=,like,null,not_null。默认根据字段数据类型使用贪婪模式。
[cdl:json={"display":"index"}] 显示范围:list=列表,create=新建表单,edit=编辑表单,all=全部,none=无,默认 all。
[cdl:json={"required":true}] 必填字段,详见附2。
规范:
建议 CDL 声明写在注释内容的最后面,每个 CDL 声明之间以一个空格隔开,这样排版才不会不影响注释内容的阅读。
[附1]控件类型:
// H5 原生组件
$h5InputBoxTypes = ['color', 'date', 'datetime-local', 'month', 'week', 'time', 'email', 'file', 'hidden', 'image', 'number', 'password', 'range', 'search', 'text', 'url'];
// 业务常用组件
$bizComponents = ['radio', 'checkbox', 'select', 'selectpage', 'selectmulti', 'passwordbox', 'bankcardno', 'image-uploader', 'images-uploader', 'file-uploader', 'files-uploader', 'textarea', 'editor', 'city-picker', 'map-picker', 'jsontable', 'numberbox', 'rate-picker', 'sortable', 'switch', 'code'];
[附2] 必填字段:
一般情况下,字段类型设置为:NOT NULL,判断为必填字段。如果有 DEFAULT '',则判断为选填字段,除非使用 CDL 强制声明为必填。
CDL 综合示例:
CREATE TABLE `ps_article` (
`id` INT UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '主键ID',
`category_id` INT UNSIGNED NOT NULL DEFAULT 0 COMMENT '分类ID [cdl:json={"component":"select","table":"ps_article_category","textfield":"category_name","idfield":"id"}]',
`article_title` VARCHAR(255) NOT NULL COMMENT '文章标题',
`author` VARCHAR(60) NOT NULL DEFAULT '' COMMENT '文章作者',
`image` VARCHAR(255) NOT NULL DEFAULT '' COMMENT '文章图片 [cdl:json={"component":"image"}]',
`intro` VARCHAR(255) NOT NULL DEFAULT '' COMMENT '文章简介 [cdl:json={"component":"textarea"}]',
`content` TEXT NOT NULL COMMENT '文章内容 [cdl:json={"component":"editor"}]',
`share_title` VARCHAR(180) NOT NULL DEFAULT '' COMMENT '文章分享标题 [cdl:json={"disable":true}]',
`share_intro` VARCHAR(255) NOT NULL DEFAULT '' COMMENT '文章分享简介 [cdl:json={"component":"textarea","disable":true}]',
`visit_count` INT UNSIGNED NOT NULL DEFAULT 0 COMMENT '浏览次数 [cdl:json={"searchable":true,"operate":"like,=","display":"index"}]',
`sort` TINYINT UNSIGNED NOT NULL DEFAULT 0 COMMENT '排序权重 [cdl:json={"display":"index"}]',
`source_link` VARCHAR(255) NOT NULL DEFAULT '' COMMENT '原文链接 [cdl:json={"component":"url"}]',
`flag` VARCHAR(16) NOT NULL DEFAULT '' COMMENT '标志(1=热门,2=推荐,3=轮播) [cdl:json={"component":"checkbox"}]',
`status` TINYINT UNSIGNED NOT NULL DEFAULT 1 COMMENT '状态(0=隐藏,1=显示)',
`created_at` INT UNSIGNED NOT NULL COMMENT '创建时间',
PRIMARY KEY (`id`),
KEY `key_article_title` (`article_title`),
KEY `key_category_id` (`category_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='文章表';