自定义表单标签
自定义表单功能由后台「扩展功能 → 自定义表单」创建,每个表单有唯一的 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 变量展示成功/错误提示。
