从决定自研UI组件开始,就一直朝着可视化设计的方向在推进。经过这段时间的集中开发,表单设计器和视图编辑器终于有了初步的成果。

表单设计器

表单设计器的核心并不只是拖拽几个输入框那么简单,真正的难点在于动态实体建模。企业应用中实体是随时变化的,今天需要一个”紧急程度”字段,明天可能就要加一个”关联审批单”的关联字段,这些都必须在不修改代码的前提下完成。

目前的实现思路是:

  1. 动态实体模型 — 通过 EntityEntityProperty 两个实体来管理模型定义,支持 20+ 种字段类型(字符串、整数、布尔、小数、日期、文本、对象、关联关系等),每个字段都可以配置验证规则、表单类型映射、布局选项。

  2. 自动生成代码和迁移 — 模型定义完成后,EntityService 自动生成 PHP 实体类(基于 Nette PHP Generator),并自动创建 Doctrine Migration,整个过程无需手动干预。

  3. 表单字段渲染FormFieldBuilderService 将模型定义映射为 Symfony Form,FormFieldRenderer 再将其渲染到视图设计器的画布上,所见即所得。

表单设计器

视图编辑器

如果说表单设计器解决的是”数据怎么来”,那视图编辑器解决的就是”界面怎么排”。这是一个完整的拖拽式可视化页面构建工具。

编辑器功能

  • 标尺与参考线系统 — 横向和纵向标尺带像素刻度,从标尺拖出参考线辅助对齐,Ctrl+点击测量距离,双击删除参考线,Ctrl+Shift+G 一键清除。
  • 区块布局 — 支持 11 种预设布局(对半分、三等分、四等分、八十六分等),区块支持折叠/展开、全宽/盒式切换。
  • 组件拖拽 — 从右侧面板拖入画布,目前支持布局、表格、文本、图片、富文本、视频、按钮、分割线、间隔、地图、图标、相册等组件。
  • 表格编辑 — 表格支持行列拖拽调整大小、单元格合并/拆分、右键上下文菜单、内联编辑。
  • 富文本工具栏 — 字体、字号、加粗、斜体、颜色、对齐、列表、上下标、撤销/重做等完整能力。

属性面板

右侧属性面板是上下文感知的,选中不同的组件会展示对应的配置项:表格属性、文本样式、区块尺寸、表单字段样式等。区块属性尤为细致,支持宽高、单位(px/%/em/rem/vw)、最小高度、圆角、背景色等。

视图编辑器

视图管理

当视图多了之后,管理就成了问题。视图管理模块基于 Gedmo Nested Set 实现了树形结构的管理方式:

  • 文件夹支持无限层级嵌套,创建文件夹时会自动在 templates/views/ 下生成对应的物理目录
  • 视图区分内置视图(基于系统模板)和用户自定义视图
  • 每个视图包含 .html.twig(运行时模板)和 .design.twig(设计时模板)两份文件,支持版本管理
  • 视图可以绑定动态实体模型,在编辑器中使用数据源面板拖入模型字段

视图管理

AI时代来了

距离上一篇博客的一年多时间里,AI编程时代真切的到来了,此项目也有了一些结合AI的尝试和设想,在接下来的开发中,我会继续探索AI在开发、低代码、企业软件中的实践。