第一步:在后台创建自定义表单
这是整个流程的基础,我们在后台定义需要收集哪些字段。

(图片来源网络,侵删)
-
登录 DedeCMS 后台。
-
在左侧菜单栏找到 【核心】 -> 【自定义表单】。
-
点击 【增加自定义表单】。
-
填写表单信息:
(图片来源网络,侵删)- 表单名称:给你的表单起个名字,方便识别,在线报名”、“产品咨询”等,这个名字不会在前台显示。
- :这个会显示在提交成功后的页面上,提交成功,感谢您的参与!”。
- 目录选择:选择一个栏目,DedeCMS 会将提交的数据作为这个栏目下的一个“文章”来存储,建议创建一个专门的“留言反馈”或“表单数据”栏目,并设置为“不生成栏目页”。
- 列表模板:选择一个用于展示所有提交数据的列表页模板(
/default/list_test.htm)。 - 发布模板:选择一个用于展示单个提交数据详情的模板(
/default/article_test.htm)。 - 项目名称:这是最关键的部分,用于定义表单中的每一个输入项,点击 【增加字段】 来逐个添加。
- 字段名:必须使用英文,
name,tel,email,content,这会作为数据库中的字段名。 - 字段提示:在前台表单中显示给用户的提示文字,您的姓名”、“联系电话”。
- 字段类型:选择对应的输入类型,如
文本域(text)、单行文本(text)、下拉菜单(select)、单选(radio)、多选(checkbox)、验证码(vcode)等。 - 是否必填:勾选此项,前台提交时该字段不能为空。
- 默认值:可以设置一个默认显示的内容。
- 数据字典:对于
select、radio、checkbox等类型,在这里填写选项,格式为选项1|选项2|选项3,性别字段可以填写男|女。
- 字段名:必须使用英文,
- 启用表单:务必勾选此项,否则前台表单将无法使用。
-
提交保存,完成以上设置后,你的自定义表单就在后台创建好了,并且系统会自动在数据库中创建相应的数据表(如
dede_addonexample)。
第二步:在前台制作表单提交页面
我们需要创建一个网页,用户可以在上面填写并提交这个表单。
-
创建一个静态页面:
- 在 DedeCMS 后台,进入 【栏目】 -> 【添加栏目】,创建一个新栏目,比如叫“在线报名”。
- 在这个栏目下,【添加文档】,创建一个新页面,标题为“在线报名表”,内容区域留空,因为我们主要使用模板。
-
创建表单模板:
(图片来源网络,侵删)- 进入 【模板】 -> 【默认模板管理】。
- 找到你刚才创建的栏目(如“在线报名”),为其设置一个列表模板和文章模板,列表模板为
list_online.htm,文章模板为article_online.htm。 - 点击 【修改】
list_online.htm文件,将里面的内容替换为以下代码:
<!DOCTYPE html> <html> <head> <meta charset="UTF-8">在线报名</title> </head> <body> <h1>在线报名</h1> <form action="{dede:field name='phpurl'/}/post.php?action=add&formid=1" method="post" enctype="multipart/form-data"> <!-- {dede:php} $this->RunPhp('PrintAutoFieldsForm(1)'); {/dede:php} --> <!-- 或者,如果你对代码熟悉,可以手动写出所有字段,这样更可控 --> <div> <label for="name">姓名:</label> <input type="text" name="name" id="name" required="required" /> </div> <div> <label for="tel">联系电话:</label> <input type="text" name="tel" id="tel" required="required" /> </div> <div> <label for="email">电子邮箱:</label> <input type="email" name="email" id="email" /> </div> <div> <label for="content">报名内容:</label> <textarea name="content" id="content" rows="5" required="required"></textarea> </div> <div> <label for="code">验证码:</label> <input type="text" name="validate" id="code" style="width:50px;" required="required" /> <img src="{dede:global.cfg_cmspath/}/plus/vcode.php" onclick="this.src='{dede:global.cfg_cmspath/}/plus/vcode.php?'+Math.random();" title="点击刷新验证码" /> </div> <div> <input type="submit" name="submit" value="提交" /> </div> </form> </body> </html>代码解释:
<form>标签中的action属性是关键:{dede:field name='phpurl'/}会自动替换为你网站设置的 PHP 文件目录(通常是/plus)。post.php是 DedeCMS 处理表单提交的核心文件。action=add表示执行“添加”操作。formid=1:这里的1是你第一步创建的自定义表单的 ID,你可以在后台【自定义表单】列表中查看每个表单对应的 ID。
name属性:<input>、<textarea>、<select>等标签的name属性,必须与你在后台创建的字段名(如name,tel)完全一致。- 验证码:DedeCMS 自带了验证码功能,直接调用
plus/vcode.php即可。
第三步:配置接收与处理
DedeCMS 的 post.php 文件会自动处理提交的数据,并将其存入你指定的数据库表中,你不需要额外编写 PHP 代码。
有两个非常重要的配置需要检查:
-
网站目录权限:
- 确保
/plus目录及其下的post.php文件有写入权限(通常是 755 或 777),如果提交后数据没有保存,十有八九是权限问题。
- 确保
-
安全设置(防止垃圾信息):
- 为了防止机器人恶意提交,建议开启“验证码”功能。
- 进入后台 【系统】 -> 【系统基本参数】 -> 【互动设置】。
- 找到 “未审核表单是否允许前台投稿”,建议设置为“否”,这样所有提交都需要你在后台审核后才会显示。
- 找到 “启用验证码” 相关选项,确保开启。
第四步:查看和管理提交的数据
用户提交表单后,你可以在后台查看和管理这些数据。
-
进入管理界面:
- 在后台左侧菜单栏找到 【核心】 -> 管理】 -> 【自定义表单管理】。
-
查看和审核:
- 你会看到一个列表,里面包含了所有用户提交的数据,每一行代表一次提交。
- 你可以查看每条数据的详细内容。
- 审核状态:通常有“待审核”和“已审核”两种状态,在【互动设置】中设置为“不允许前台投稿”后,所有新提交都会是“待审核”状态,你需要手动点击“审核”按钮,数据才会出现在你选择的栏目列表中。
- 删除:可以删除不需要的提交记录。
-
前台展示(可选):
- 你在第一步设置的 列表模板 和 发布模板,就是用来在前台展示这些提交数据的。
- 你可以创建一个“报名名单”页面,调用自定义表单的数据,将所有已审核的报名信息展示出来。
- 调用方法使用 DedeCMS 的标签,
{dede:arclist typeid='你的栏目ID' channelid='自定义表单的channelid'} <li> <h3>[field:name/]</h3> <p>电话:[field:tel/]</p> <p>内容:[field:content/]</p> </li> {/dede:arclist}channelid是自定义表单的频道ID,可以在后台【频道模型】->【自定义表单】中找到。
常见问题与解决方案 (FAQ)
-
Q: 提交后页面跳转到404或空白页?
- A: 检查
action中的formid是否正确,以及/plus/post.php文件是否存在且有执行权限。
- A: 检查
-
Q: 提交了,但后台看不到数据?
- A: 1. 检查数据库连接是否正常,2. 检查
/plus目录权限,3. 检查是否开启了验证码,且用户输入正确,4. 检查【互动设置】中是否设置了“不允许前台投稿”,如果是,数据在“待审核”列表里。
- A: 1. 检查数据库连接是否正常,2. 检查
-
Q: 如何让提交成功后跳转到指定页面?
- A: 在
<form>标签中加入onsubmit属性,或者修改post.php文件(不推荐,升级会覆盖),一个简单的方法是在提交成功后,通过 JS 跳转,可以在表单模板的底部加入一段 JS 代码:<script type="text/javascript"> // 检测URL中是否有特定的参数,'submit_success' if (window.location.search.indexOf('submit_success') > -1) { alert('提交成功!'); window.location.href = '/success.html'; // 跳转到你的成功页面 } </script>在
post.php中找到处理成功后的跳转代码,修改为类似ShowMsg('提交成功!', '/success.html?submit_success', 0, 5000);的形式。
- A: 在
通过以上四个步骤,你就可以在 DedeCMS 中完整地实现一个自定义表单的创建、提交、处理和管理功能了。
