首页/开发手册/自定义表单标签

开发手册

SoeayCMS 安装、标签使用与二次开发完整指南

自定义表单标签

自定义表单功能由后台「扩展功能 → 自定义表单」创建,每个表单有唯一的 fcode。前台可通过两种方式使用:自动生成完整表单(推荐),或在 form.html 模板中手动渲染字段。

方式一:自动生成完整表单(推荐)

在任意模板位置放置 {soeay:form} 单标签,系统会自动读取后台表单定义并生成完整的 HTML 表单,包含字段、CSRF 隐藏域和提交按钮。

{soeay:form fcode="contact"}
属性说明
fcode表单唯一编码
name表单名称(与 fcode 二选一)

方式二:自定义模板 + 手动提交(更灵活)

访问 /form/{fcode} 会渲染 form.html 模板,模板中可用 $form、$fields 等 PHP 变量自定义表单结构。提交地址必须使用 /form/submit/{fcode},而不是 /form/{fcode}。

<form action="/form/submit/contact" method="post">
    {soeay:csrf_field}
    <input type="text" name="name" placeholder="姓名" required>
    <input type="tel" name="mobile" placeholder="手机" required>
    <textarea name="content" placeholder="留言" required></textarea>
    <button type="submit">提交</button>
</form>

关键说明

  • 提交地址:POST 必须提交到 /form/submit/{fcode},GET /form/{fcode} 仅用于展示。
  • CSRF 防护:手动表单必须包含 {soeay:csrf_field} 或手动写入 <input type="hidden" name="_csrf_token" value="...">,否则提交会被安全拦截。
  • 字段名:<input> 的 name 必须与后台表单字段定义一致,才能正确入库。
  • 前端校验:示例中的 required 仅做浏览器层校验,后台也会进行二次校验,请勿依赖前端。

提交结果

提交成功后由控制器返回提示信息,模板中可通过 $message 和 $message_type 变量展示成功/错误提示。