表单模板标签

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>

性能优化建议

  1. 合理使用缓存

    <!--{iCMS:forms:lists cache='1' time='3600'}-->

    ⚠️ 对于表单列表数据,可以设置较长的缓存时间,但表单提交数据应谨慎缓存。

  2. 按需获取数据

    只在需要详细数据时设置data参数:

    <!--{iCMS:forms:datas formid='1' data='1'}-->
  3. 分页显示

    对于数据量较大的表单提交记录,始终使用分页:

    <!--{iCMS:forms:datas formid='1' row='10' page='1'}-->

安全注意事项

  1. 表单验证

    在模板中添加必要的前端验证,配合后端验证提高安全性。

  2. 权限控制

    根据用户权限显示不同的表单数据:

    <!--{if $ME.role_id>1}-->
      <!--{iCMS:forms:datas formid='1'}-->
    <!--{else}-->
      <p>您没有权限查看此数据</p>
    <!--{/if}-->
  3. 敏感数据处理

    对于包含敏感信息的表单数据,可以使用encode标签进行加密处理。

调试技巧

  1. 开启调试模式

    <!--{iCMS:forms:datas formid='1' db_debug='1'}-->
  2. 查看SQL语句

    <!--{$forms_datas_sql}-->
  3. 输出变量结构

    <!--{$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>