dede自定义表单如何隐藏字段?

99ANYc3cd6
预计阅读时长 16 分钟
位置: 首页 DEDE建站 正文
  1. 后台管理员可见,但前端用户不可见:这是最常见的需求,比如用于记录提交时间、IP地址、用户ID等信息,这些数据不需要用户填写或看到。
  2. 前后端都完全隐藏:用于存储一些系统处理时需要的固定值或中间数据。

下面我将为你详细介绍这两种隐藏方法,并提供一个完整的最佳实践案例。


使用 type='hidden' 属性(推荐)

这是最标准、最简单的方法,适用于 前端用户不可见,但后台管理员可见 的场景。

操作步骤:

  1. 进入自定义表单管理

    • 登录你的 DedeCMS 后台。
    • 在左侧菜单栏中找到 【核心】 -> 模型管理】
    • 在页面中,点击 【自定义表单】 选项卡。
  2. 添加或编辑字段

    • 如果是新表单,点击右上角的 【增加一个自定义字段】
    • 如果是已有表单,找到你想要隐藏的字段,点击其后的 【管理】 -> 【修改】
  3. 设置字段属性 在弹出的字段编辑界面中,进行如下设置:

    • 字段名:填写英文字段名,如 ipaddresssubtime 等,这个名很重要,用于后续获取数据。
    • 字段类型:选择 文本,对于隐藏字段,通常文本类型就足够了。
    • 字段说明:填写字段的描述,如“提交IP地址”、“提交时间”,这个说明会显示在后台列表中。
    • 前台显示这是最关键的一步! 选择 ,这样,在前端表单模板中,这个字段就不会被显示出来。
    • 参数设置:将 表单提示文字 留空。
    • **高级选项 -> 表单控件选择 hidden,这是隐藏字段的核心属性,它会在前端生成一个 <input type="hidden">
  4. 保存字段 点击页面底部的 【保存】 按钮。

前端模板调用:

完成上述步骤后,DedeCMS 会自动在前端表单的 HTML 代码中生成一个隐藏的 input 标签,你无需在模板中手动添加。

<input type="hidden" name="ipaddress" id="ipaddress" value="">

后台自动填充数据(进阶)

很多时候,我们隐藏的字段需要自动填充动态数据,当前时间用户IP地址,这需要结合修改处理表单提交的 PHP 文件来实现。

操作步骤:

  1. 完成方法一的步骤:按照方法一,创建一个类型为 hidden 的字段,subtime(提交时间)。

  2. 找到并修改处理文件

    • 在你的网站根目录下,找到处理自定义表单提交的 PHP 文件,这个文件通常位于 /plus/ 目录下,名为 diy.php
    • 重要提示:在修改任何核心文件之前,务必备份一份原文件,以防出错。
  3. 修改 diy.php 文件 用代码编辑器打开 /plus/diy.php 文件,找到类似下面这行代码(大约在第 40 行左右):

    $addvar = array();
    foreach($dede_fields as $field=>$fielddata)
    {
        if($fielddata!='' && $addvalue[$field]!='')
        {
            $addvar[$field] = FilterSearch($addvalue[$field]);
            $addvar[$field] = addslashes($addvar[$field]);
        }
    }

    在这段代码的 foreach 循环之前之后,添加你自己的逻辑来为隐藏字段赋值。

    示例1:自动填充当前时间

    // ... 原有代码 ...
    // 添加:为隐藏字段 'subtime' 自动填充当前时间
    $addvar['subtime'] = time(); // 使用时间戳
    // 或者格式化日期:$addvar['subtime'] = date('Y-m-d H:i:s');
    foreach($dede_fields as $field=>$fielddata)
    {
        // ... 原有代码 ...
    }

    示例2:自动填充用户IP地址

    // ... 原有代码 ...
    // 添加:为隐藏字段 'ipaddress' 自动填充IP地址
    $addvar['ipaddress'] = GetIP(); // DedeCMS内置函数获取IP
    foreach($dede_fields as $field=>$fielddata)
    {
        // ... 原有代码 ...
    }
  4. 保存并测试 保存修改后的 diy.php 文件,当用户提交表单时,subtimeipaddress 字段会自动被填入当前时间和IP地址,而用户在前端完全无感知。


最佳实践:一个完整的例子

假设我们要创建一个“在线报名”表单,需要记录提交者填写的姓名、电话,以及后台才能看到的提交时间和IP。

步骤 1:在后台创建字段

  1. 进入 【核心】 -> 模型管理】 -> 【自定义表单】
  2. 点击 【增加一个自定义字段】
    • 字段名name
    • 字段类型文本
    • 前台显示
    • 表单提示文字请输入您的姓名
    • 保存。
  3. 再次点击 【增加一个自定义字段】
    • 字段名tel
    • 字段类型文本
    • 前台显示
    • 表单提示文字请输入您的联系电话
    • 保存。
  4. 再次点击 【增加一个自定义字段】
    • 字段名subtime
    • 字段类型文本
    • 前台显示
    • 表单控件hidden
    • 字段说明提交时间
    • 保存。
  5. 再次点击 【增加一个自定义字段】
    • 字段名ipaddress
    • 字段类型文本
    • 前台显示
    • 表单控件hidden
    • 字段说明用户IP
    • 保存。

步骤 2:修改 diy.php 文件

打开 /plus/diy.php,在 foreach 循环前添加自动填充代码:

// 在 foreach($dede_fields as $field=>$fielddata) 之前添加
$addvar['subtime'] = date('Y-m-d H:i:s');
$addvar['ipaddress'] = GetIP();

步骤 3:创建前台模板

  1. 进入 【模板】 -> 【自定义表单】
  2. 点击 【增加一个自定义表单模板】
  3. 中,编写你的表单 HTML 代码。只需包含需要用户填写的字段
<form name='myform' action="/plus/diy.php" enctype="multipart/form-data" method="post">
    <input type="hidden" name="action" value="post" />
    <input type="hidden" name="diyid" value="1" /> {!-- 这里的值1是你的自定义表单ID,在列表页可以看到 --}
    <input type="hidden" name="do" value="2" />
    <p>姓名:<input type='text' name='name' id='name' style='width:250px' class='intxt' /></p>
    <p>电话:<input type='text' name='tel' id='tel' style='width:250px' class='intxt' /></p>
    <p><input type='submit' name='submit' value='提 交' class='coolbg' /></p>
</form>

注意

  • actiondiyiddo 这些隐藏字段是 DedeCMS 自定义表单提交所必需的,必须保留。
  • 我们不需要subtimeipaddress 手动添加 input 标签,因为它们是 hidden 类型,且 diy.php 会自动填充。

步骤 4:查看后台数据

用户提交表单后,你可以在后台 【核心】 -> 【自定义表单】 中看到提交的数据列表,每一行都会显示用户填写的 nametel,以及系统自动填写的 subtimeipaddress

需求场景 实现方法 关键设置
前端用户不可见,后台可见 方法一 在字段管理中,设置 前台显示=否表单控件=hidden
后台自动填充动态数据 方法二 /plus/diy.php 文件中,为隐藏字段手动赋值(如 $addvar['field'] = value;)。
最佳实践(推荐) 方法一 + 方法二 结合使用,先创建好 hidden 类型的字段,再修改 diy.php 实现数据自动填充。

通过以上方法,你就可以灵活地在 DedeCMS 自定义表单中隐藏任何你需要的字段了。

-- 展开阅读全文 --
头像
织梦整形医院网站模板如何快速搭建?
« 上一篇 03-01
dede数据库连接文件
下一篇 » 03-01

相关文章

取消
微信二维码
支付宝二维码