正在加载文档...
表单模板标签
iCMS 表单模板标签技术文档
表单标签 (FormsFunc)
表单标签用于创建和获取自定义表单数据,支持表单创建、数据获取等功能。
forms:create 标签
创建自定义表单。
支持参数
| 参数名 | 类型 | 默认值 | 说明 |
|---|---|---|---|
| formid/fid | 整数 | - | 表单ID |
| form | 数组 | - | 表单数据 |
| prefix | 字符串 | - | 表单字段前缀 |
| glue | 字符串 | '' | 表单元素连接符 |
| layout | 布尔值 | true | 是否使用布局 |
| option | 数组 | - | 表单选项配置 |
| assign | 字符串 | - | 将表单HTML赋值给指定变量 |
使用示例
<!-- 创建ID为1的表单 -->
<!--{iCMS:forms:create formid='1'}-->
<!-- 创建表单并赋值给变量 -->
<!--{iCMS:forms:create formid='1' assign='myform'}-->
<!--{$myform}-->
forms:datas 标签
获取表单提交数据。
支持参数
| 参数名 | 类型 | 默认值 | 说明 |
|---|---|---|---|
| formid/fid | 整数 | - | 表单ID |
| form | 数组 | - | 表单数据 |
| row | 整数 | 10 | 每页显示条数 |
| cache | 布尔值 | 0 | 是否缓存结果 |
| time | 整数 | -1 | 缓存时间(秒) |
| page | 布尔值 | 0 | 是否启用分页 |
| data | 布尔值 | 0 | 是否获取详细数据 |
| keywords | 字符串 | - | 搜索关键词 |
| sfield | 字符串 | - | 搜索字段 |
| pattern | 字符串 | REGEXP | 搜索模式 |
| orderby | 字符串 | id | 排序字段 |
| by | 字符串 | DESC | 排序方式(ASC/DESC) |
返回数据结构
[
[
'id' => 数据ID,
'userid' => 用户ID,
'username' => 用户名,
// 其他表单字段...
],
// 更多数据...
]
使用示例
<!--{iCMS:forms:datas formid='1' row='10' page='1' cache='1'}-->
<!--{if $forms_datas_total>0}-->
<div class="form-data-list">
<h3>表单数据列表(<!--{$forms_datas_total}-->条)</h3>
<!--{foreach key="key" value="value" from="$forms_datas"}-->
<div class="data-item">
<p>ID: <!--{$value.id}--></p>
<p>用户: <!--{$value.username}--></p>
<!-- 动态输出表单字段 -->
<!--{foreach key="fkey" value="field" from="$forms_fields"}-->
<p><!--{$field.name}-->: <!--{$value[$field.id]}--></p>
<!--{/foreach}-->
<p>提交时间: <!--{$value.addtime|date:'Y-m-d H:i:s'}--></p>
</div>
<!--{/foreach}-->
</div>
<div class="paging"><!--{$forms_datas_page.pagination}--></div>
<!--{else}-->
<div class="no-data">暂无数据</div>
<!--{/if}-->
forms:list 标签
获取表单列表。
支持参数
| 参数名 | 类型 | 默认值 | 说明 |
|---|---|---|---|
| row | 整数 | 10 | 每页显示条数 |
| cache | 布尔值 | 0 | 是否缓存结果 |
| time | 整数 | -1 | 缓存时间(秒) |
| page | 布尔值 | 0 | 是否启用分页 |
| status | 整数 | 1 | 状态(1:正常) |
| type | 字符串 | - | 表单类型 |
| pic | 布尔值 | - | 只显示有图片的表单 |
| nopic | 布尔值 | - | 只显示无图片的表单 |
| startdate | 字符串 | - | 开始日期 |
| enddate | 字符串 | - | 结束日期 |
| orderby | 字符串 | id | 排序字段 |
| by | 字符串 | DESC | 排序方式(ASC/DESC) |
返回数据结构
[
[
'id' => 表单ID,
'name' => 表单名称,
'title' => 表单标题,
'description' => 表单描述,
'pic' => [图片信息],
'status' => 状态,
'type' => 类型,
'config' => [表单配置],
'fields' => [表单字段],
'addtime' => 添加时间
],
// 更多表单...
]
使用示例
<!--{iCMS:forms:list row='10' cache='1'}-->
<!--{foreach key="key" value="value" from="$forms_list"}-->
<div class="form-item">
<h3><!--{$value.title}--></h3>
<p><!--{$value.description}--></p>
<!--{if $value.pic.url}-->
<img src="<!--{$value.pic.url}-->" alt="<!--{$value.title}-->">
<!--{/if}-->
<a href="javascript:;" onclick="showForm(<!--{$value.id}-->)">填写表单</a>
</div>
<!--{/foreach}-->
forms:encode 标签
加密表单数据。
支持参数
| 参数名 | 类型 | 默认值 | 说明 |
|---|---|---|---|
| value | 字符串 | - | 需要加密的值 |
使用示例
<!--{iCMS:forms:encode value='123456'}-->
加密后的值: <!--{$forms_encode}-->
最佳实践
表单应用场景
创建联系表单
<!-- 创建联系表单 -->
<div class="contact-form">
<h2>联系我们</h2>
<!--{iCMS:forms:create formid='1'}-->
</div>
<!--{iCMS:forms:get app="表单标识"}-->
<form action="<!--{$forms_get.action}-->" class="liuyan" method="POST" i="cms:ui:form">
<!--{$forms_get.html}-->
<div class="clear"></div>
<button type="submit">提交</button>
</form>
显示表单提交数据
<!--{iCMS:forms:datas formid='8' row='20' page='1' cache='1'}-->
<div class="data-list">
<h2>表单提交数据</h2>
<table>
<tr>
<!--{foreach key="fkey" value="field" from="$forms_fields"}-->
<th><!--{$field.name}--></th>
<!--{/foreach}-->
<th>提交时间</th>
</tr>
<!--{foreach key="key" value="value" from="$forms_datas"}-->
<tr>
<!--{foreach key="fkey" value="field" from="$forms_fields"}-->
<td><!--{$value[$field.id]}--></td>
<!--{/foreach}-->
</tr>
<!--{/foreach}-->
</table>
<div class="paging"><!--{$iCMS.PAGE.NAV}--></div>
</div>
性能优化建议
-
合理使用缓存
<!--{iCMS:forms:lists cache='1' time='3600'}-->⚠️ 对于表单列表数据,可以设置较长的缓存时间,但表单提交数据应谨慎缓存。
-
按需获取数据
只在需要详细数据时设置data参数:
<!--{iCMS:forms:datas formid='1' data='1'}--> -
分页显示
对于数据量较大的表单提交记录,始终使用分页:
<!--{iCMS:forms:datas formid='1' row='10' page='1'}-->
安全注意事项
-
表单验证
在模板中添加必要的前端验证,配合后端验证提高安全性。
-
权限控制
根据用户权限显示不同的表单数据:
<!--{if $ME.role_id>1}--> <!--{iCMS:forms:datas formid='1'}--> <!--{else}--> <p>您没有权限查看此数据</p> <!--{/if}--> -
敏感数据处理
对于包含敏感信息的表单数据,可以使用encode标签进行加密处理。
调试技巧
-
开启调试模式
<!--{iCMS:forms:datas formid='1' db_debug='1'}--> -
查看SQL语句
<!--{$forms_datas_sql}--> -
输出变量结构
<!--{$forms_fields|print_r}-->
高级用法
自定义表单样式
<!--{iCMS:forms:create formid='1' prefix='custom_' option=['class'=>'my-form','submit'=>'提交信息']}-->
条件筛选表单数据
<!--{iCMS:forms:datas
formid='1'
keywords='$_GET.q'
sfield='name'
startdate='2023-01-01'
enddate='2023-12-31'
row='15'
page='1'
}-->
表单与其他功能结合
<!-- 文章详情页底部的评论表单 -->
<!--{iCMS:article:data id='$id'}-->
<div class="article-detail">
<h1><!--{$article_data.title}--></h1>
<div class="content"><!--{$article_data.content}--></div>
<!-- 评论表单 -->
<div class="comment-form">
<h3>发表评论</h3>
<!--{iCMS:forms:create formid='2' option=['hidden'=>['article_id'=>$article_data.id]]}-->
</div>
</div>