跳转到内容

表单

预置的联系报价预约注册表单。AI 只需一个组件即可完成接入——无需编写提交处理逻辑——每条提交内容都会进入你应用的提交收件箱

Proyecta 中的表单是一种能力,而非 AI 手写的代码。当你的应用需要让访客与你取得联系时——无论是联系表单、报价申请、预约挂号还是活动报名——Proyecta 会自动配置一套现成的表单定义,并通过模板内置的 block 进行渲染。字段验证、成功状态、提交内容存储以及所有者通知均开箱即用,无需额外配置。

每个表单均基于五种内置预置之一。描述你想要的表单,Proyecta 会自动选择(并适配)合适的类型——你无需从零开始构建字段。

预置类型 form api id 用途 配合使用
联系 contactForm 通用“联系我们”:姓名、邮箱、可选电话、留言 企业信息
报价 quoteForm 报价申请:联系信息 + 所需服务 + 工作详情 服务
预约 bookingForm 预约/挂号:服务项目、意向日期和时间、联系信息 服务
注册 registrationForm 活动或课程报名(RSVP):参与者信息 + 备注 活动
订单 orderForm 订单受理:客户想要什么、联系信息、备注 菜单、商品目录

你可以在一个应用中使用多个表单(例如同时有联系表单和预约表单),AI 也可以对任意表单进行字段的添加、重命名或结构调整。

AI 从不手写表单或提交处理逻辑。它会插入模板内置的 <FormBlock/> 并通过 id 或 api id 指向对应表单:

import { FormBlock } from '@/components/blocks/FormBlock';
// 放置在任意公开页面上——联系区块、"申请报价"面板等
<FormBlock form="contactForm" />;

<FormBlock/> 会自动处理一切:

  • 按类型渲染字段 — 文本/邮箱/电话渲染为输入框,长文本渲染为文本域,选项渲染为下拉菜单,勾选项渲染为复选框,日期和时间使用原生选择器,文件字段渲染为“附加文件”控件。
  • 浏览器端验证 — 在发送任何内容之前,必填字段会被校验。
  • 服务端验证 — 若服务器拒绝某个值,具体错误会内联显示在对应字段旁边(不会丢失提交内容,不会静默失败)。
  • 显示成功状态 — 提交后,表单会替换为友好的确认提示(表单自带的确认消息),并提供再次提交的选项。
  • 安全降级 — 若表单不存在或已停用,该 block 不渲染任何内容,不会导致公开页面报错。

由于该 block 归属于模板,AI 的工作仅是放置它并为周围的区块设置样式——其背后的逻辑是固定且正确的。

表单可以接受用户上传的文件(如收据、参考图片、简报)。文件字段会渲染一个“附加文件”按钮,将文件上传至存储空间,并将其公开 URL 写入提交内容。系统会自动执行以下限制:

  • 仅支持图片和 PDF,最大 5 MB(较大的图片会在浏览器端先进行缩小处理)。
  • 文件上传期间提交按钮会禁用,确保提交内容不会在文件未上传完成时发出。

每条提交内容都会被存储,并显示在你应用的提交收件箱中——这是管理面板的一部分,由模板的 <SubmissionsInbox/> 渲染。在那里,你(所有者)可以:

  • New / Read / Archived 标签页下浏览提交内容,New 标签页会显示未读数量角标。
  • 打开任意提交查看已填写的字段值、来源页面及提交日期。
  • 将提交标记为已读、移回未读,或归档
  • 将收件箱筛选至单个表单,或在一个列表中查看所有表单的提交内容。

收件箱仅限管理员访问——读取者必须以管理员账号登录(在服务端强制校验)。

你可以为表单开启邮件通知功能,每当有人提交时向你发送通知——开启所有者通知并设置接收邮件的地址,即可在不打开应用的情况下直接在收件箱中获取线索。邮件通过 Proyecta 的邮件能力发送,无需额外配置即可使用。

  • "在页脚添加一个包含姓名、邮箱和留言的联系表单,每当有人提交时发送邮件至 hello@mybiz.com。"
  • "在每个服务页面添加一个'申请报价'表单,询问用户需要哪项服务及工作详情。"
  • "添加一个预约表单,让客户可以申请预约并选择意向日期和时间。"
  • "为工作坊页面创建一个活动注册表单,并允许参与者附加 PDF 文件。"
  • "显示提交收件箱,并只展示我尚未阅读的提交内容。"
  • 内容管理 — 表单与你的内容集合共同存在于同一内容模型中。
  • 管理面板 — 用于查看提交内容。
  • 邮件 — 所有者通知邮件的发送方式。