表单模板编辑器中的字段在编辑预览中丢失了换行符

在编辑使用表单模板的帖子时,编辑器预览会将任何多行 composer 字段渲染为一行连续文本:标题与其后的句子粘连在一起,列表和 BBCode 则显示为纯文本。保存后的帖子渲染正常——只有预览是错误的。

原因: form-template-field/composer.gjs 将每个 composer 字段镜像到一个隐藏的 <input type="text"> 中,以便进行原生验证:

<input id={{this.validationInputId}} type="text" name={{@id}} value={{this.composerValue}} ... class="form-template-field__composer-hidden-input" />

编辑器回复——即预览所渲染的内容——是由这些输入框组装而成的。根据 HTML 值净化规则,type="text" 输入框在赋值时会剥离 CR/LF(回车/换行符),因此在预览看到该字段值时,其中的所有换行符都已丢失。保存时读取的是编辑器本身,因此存储的原始内容不受影响。

复现步骤(2026.9.0-latest):任何包含 composer 字段的表单模板 → 输入包含空行的文本(例如 ## 标题、一个段落、一个列表) → 打开已保存帖子的编辑模式 → 预览显示内容被扁平化为单行,而帖子本身渲染正常。

我们作为主题正在使用的变通方案: 将隐藏输入框改为 type="hidden"(这在赋值时会保留换行符),从字段编辑器中修复已被扁平化的值,并触发一个 input 事件以重建回复。这可以完全恢复预览。

核心修复注意事项:type="hidden" 会跳过原生的 required 约束验证,因此替代控件最好是一个视觉上隐藏的 <textarea>,而不是文本输入框。