pbootcms单页模型调用表单
如遇下载链接蓝奏网盘打不开lanzous替换成lanzoux尝试! 广告

先纠正一个最容易走偏的认知:单页模型本身不提供任何表单能力,”调用表单”实际上是让单页模板去调用 PbootCMS 的「自定义表单」模块。所以这件事的实质是:后台建一个表单 → 在单页模板里写 form 标签 → 表单的 fcode 和单页的 scode 各管各的,别弄混。
一、先分清两个”编码”,这是理解的关键
表格
编码 属于谁 作用 在哪设置
scode 单页栏目 决定这个单页调哪篇内容 内容栏目编辑页
fcode 自定义表单 决定这个 form 把数据交给哪个表单 自定义表单编辑页
一个”联系我们”单页,通常是一个 scode + 一个 fcode 配合使用:上面用 scode 输出电话地址,下面用 fcode 收集访客留言。两者完全独立,改了哪个都不影响另一个。
二、后台第一步:建表单、加字段
进入 后台 → 扩展内容 → 自定义表单 → 新增表单:
表单名称:如”在线咨询”,仅后台可见
表单标识(fcode):如 yuyue、contact,英文或数字、唯一不可重复,前台要用到它
是否开启验证码:默认关闭,防机器提交建议开启
提交提示:用户提交后显示的提示语,如”提交成功,我们将尽快与您联系”
保存表单后,再给它加字段(新增字段),几个要点:
字段标识:如 name、tel、content,这是前台 name 属性的取值,必须一字不差
是否必填:勾上后,前台必须同步加 required,否则后台会拦提交
常用字段:姓名(name)、电话(tel)、需求描述(content)
官方 FAQ 值得单独说一次:后台加字段时没有”类型”选项,这不是 bug。PbootCMS 的设计是——字段类型完全由前台 HTML 决定,后台只负责规定”有哪些字段名”,数据对后端而言一律按文本存储。所以你要做下拉框就在前台写 “,要做上传就写 <input type=”file”>,自由度比”后台选类型”更高。
三、第二步:在单页模板里写表单
这是核心。假定单页模板是 contact.html,完整可用的写法如下:
html
{pboot:include(‘header.html’)}
<!– 上半部分:单页内容(电话、地址等) –>
{pboot:content scode={sort:scode} cache=3600}
<div class=”page-banner”>
<img src=”[content:ext_banner]” alt=”[content:title]”>
[content:title]</h1>
</div>
<div class=”contact-info”>
电话:[content:ext_tel]</p>
邮箱:[content:ext_email]</p>
地址:[content:ext_address]</p>
</div>
{/pboot:content}
<!– 下半部分:表单,数据交给 fcode 指定的那个表单 –>
<div class=”form-box”>
在线留言</h3>
<form action=”{pboot:form fcode=’yuyue’}” method=”post”>
<div class=”form-group”>
您的姓名:</label>
<input type=”text” name=”name” required placeholder=”请输入姓名”>
</div>
<div class=”form-group”>
联系电话:</label>
<input type=”tel” name=”tel” required placeholder=”请输入联系电话”>
</div>
<div class=”form-group”>
需求描述:</label>
<textarea name=”content” placeholder=”请简单描述您的需求”></textarea>
</div>
<button type=”submit”>提交</button>
</form>
</div>
{pboot:include(‘footer.html’)}
三个必须对齐的点:
action 必须是 {pboot:form fcode=’你的表单标识’} —— 这是系统生成的数据接收地址,手写 action=”save.php” 之类的会直接失败。
method 必须是 post —— 用 get 提交的系统模板不接收。
每个 name 必须与后台字段标识一致 —— name=”name”、name=”tel” 对应后台的 name、tel。不一致的字段会被丢弃,严重时整单提交失败。
四、加验证码(后台开启时才需要)
如果后台该表单开了验证码,前台必须补上 checkcode 字段,并放一张可点击刷新的验证码图:
html
<div class=”form-group”>
验证码:</label>
<input type=”text” name=”checkcode” required placeholder=”请输入验证码”>
<img src=”{pboot:checkcode}” title=”点击刷新”
onclick=”this.src='{pboot:checkcode}?’+Math.round(Math.random()*10);”>
</div>
{pboot:checkcode} 输出验证码图片地址;onclick 那串是刷新逻辑(点击换一张)。
更稳妥的做法是用 {pboot:formcodestatus} 判断后台是否开启,避免”后台关了但前台还显示”的尴尬:
html
{pboot:if(‘{pboot:formcodestatus}’==’1’)}
<div class=”form-group”>
验证码:</label>
<input type=”text” name=”checkcode” required>
<img src=”{pboot:checkcode}” onclick=”this.src='{pboot:checkcode}?’+Math.round(Math.random()*10);”>
</div>
{/pboot:if}
五、字段类型对应表(后台无类型,全在前台写)
表格
你要的控件 前台 HTML 写法 后台字段标识注意
单行文本 <input type=”text” name=”name”> 普通标识
电话 <input type=”tel” name=”tel”> 普通标识
邮箱 <input type=”email” name=”email”> 普通标识
单选 <input type=”radio” value=”男” name=”sex”> 同一组用同名
下拉 <select name=”province”>北京</option></select> 普通标识
多行文本 <textarea name=”content”></textarea> 普通标识
多选(复选) <input type=”checkbox” value=”篮球” name=”like[]”> name 必须加中括号
文件上传 <input type=”file” name=”file”> 需在后台配置允许格式与大小
多选字段的 name=”like[]” 是硬规则——不加中括号,多个选项只会存进最后一个,这是最隐蔽的坑。
六、进阶:单页里嵌留言板(另一种表单)
如果你要的不是”自定义表单”,而是系统内置的留言板,用的地址完全不同:
html
<form action=”{pboot:msgaction}” method=”post”>
<input type=”text” name=”contacts” placeholder=”联系人”>
<input type=”text” name=”mobile” placeholder=”手机”>
<input type=”text” name=”content” placeholder=”内容”>
<input type=”text” name=”checkcode” placeholder=”验证码”>
<img src=”{pboot:checkcode}” onclick=”this.src='{pboot:checkcode}?’+Math.round(Math.random()*10);”>
<button type=”submit”>提交</button>
</form>
关键区别:留言板用 {pboot:msgaction}(专用地址),自定义表单用 {pboot:form fcode=’xxx’}。两者绝不可混用,把留言板的字段名丢进自定义表单的 action 里,提交一定失败。留言表单的字段名(contacts、mobile、content)是系统固定的。
七、在单页里”展示”表单记录(少数场景)
如果你想把用户提交的留言展示在页面上(比如做”客户留言墙”),用 {pboot:formlist},注意不是 {pboot:form}——V1.3.3 之后才拆开这两个标签,老教程写同一个名字会因为”提交和调取冲突”而失效:
html
{pboot:formlist fcode=’yuyue’ num=10}
姓名:[form:name]</p>
电话:[form:tel]</p>
时间:[form:date]</p>
{/pboot:formlist}
可用标签:[form:n](序号从 0 起)、[form:i](从 1 起)、[form:date](提交时间)、[form:自定义字段名]。默认带分页,page=0 可关闭。
实务建议:表单记录默认在后台”自定义表单 → 记录”里就能看,前台展示的意义不大,还有隐私泄露风险(电话、地址挂在公网),一般只在内部演示场景用,且 page=0 关掉分页。
八、避坑清单
表格
现象 原因
提交后提示失败/无反应 action 没写 {pboot:form fcode=’xxx’},或 fcode 拼错
部分字段后台看不到 前台 name 与后台字段标识不一致(大小写也算)
多选只存进一个值 name 没加中括号,写成 name=”like” 而非 name=”like[]”
提交提示验证码错误 后台开了验证码但前台没放 checkcode 字段
点提交整页刷新、数据没进库 method 写成了 get,必须 post
调取记录不显示 用了 {pboot:form} 而非 {pboot:formlist}
表单数据找不到 数据存在数据库 ay_form_表单标识 表,后台”自定义表单→记录”里看
图片/文件传不上去 后台未配置允许格式,或超 2MB(需同步调服务器 upload_max_filesize)
改完模板没生效 没清缓存,删 runtime/cache/*、runtime/temp/*
一句话总结:单页调表单 = 后台”自定义表单”建 fcode → 单页模板里写 <form action=”{pboot:form fcode=’xxx’}” method=”post”> → 字段 name 与后台标识逐一对应;后台字段没有”类型”是设计如此,控件类型全由前台 HTML 决定;多选字段 name 一定要加 [],开了验证码要补 checkcode;留言板走 {pboot:msgaction}、表单记录用 {pboot:formlist},两个标签千万别混。
NOTICE:【咨询风格酷】客服微信:wwwxmamcn
NOTICE:【风格酷模板网②群】QQ群:288678775
☉免责声明:本站所有模板均来自用户分享和网络收集,仅供学习与参考,请勿用于商业用途,如果损害了您的权利,请联系网站客服,我们核实后会立即删除。
☉如果源码网盘地址失效!或有其他问题,请点我报错,谢谢合作!
☉人民币与积分汇率为1比10,即1元=10积分.有任何疑问请联系客服!
☉如有其他问题,请加网站客服QQ(1131734965)进行交流。
☉本站提供的源码、模板、软件工具等其他资源,都不包含技术服务,请大家谅解!
☉源码、模板等资源会随着技术、环境的升级而存在部分问题,还请慎重选择。