织梦二次开发

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 832|回复: 0

[共用功能] 织梦“修改自定义表单字段”功能分析教程

[复制链接]

1046

主题

1109

帖子

5334

积分

超级版主

Rank: 8Rank: 8

金币
256
贡献
3959
发表于 2015-11-9 15:39:47 | 显示全部楼层 |阅读模式
  有时候我们会把已经添加好的字段进行修改,这时就要用到自定义表单字段修改了如下图所示:

修改自定义表单

修改自定义表单


  进入到“修改自定义表单”后,点击“修改”进入到如下修改界面:

修改界面

修改界面


  除了字段名称不能改外,其它都可以修改,不知道大家看到这个界面,如果你经常添加字段的话,是不是有点熟悉?没有错,其实,这个功能跟织梦模型里面的添加字段,修改字段几乎一样。处理的代码也绝大多数一样,所以,在织梦基地分析源码时,不会再跟分析模型字段修改那样详细了,我只把难点、重点再次解释一次,如果不会请看下面两篇教程讲的非常详细:








织梦系统“编辑字段”功能分析教程上篇
织梦系统“编辑字段”功能分析教程下篇

  修改(编辑)字段文件是:diy_field_edit.php 对应的织梦模板文件是diy_field_edit.htm。

代码分析开始:

  1.当我们进入到修改界面时,其实是执行下面这段代码:

修改界面代码

修改界面代码


  在这段代码里面,我们主要是获取表#@__diyforms里面的字段info信息,然后,处理这里面的内容;再一个处理的是文件类型,这个直接从文件dede/inc/fieldytpe.txt获取。下面的这个遍历有可能不好理解:

4.jpg

  这个遍历的作用就是查询出当前的字段名,如果找到了,还就不需要再遍历了,如果再遍历那不是在浪费时间啊,所以,直接break。最后,引入模板文件diy_field_edit.htm,显示查询出来的内容。

  2. 当我们修改好字段内容,点击“确定”进行提交后,执行的代码条件代码就是if($action=='save')这里面的内容了。在这段代码里面,如果我们仔细研究发现,绝大部分代码跟添加字段文件diy_field_add.php里面的代码都是一样的,唯一不同就是下面这段代码:

修改自定义表单表

修改自定义表单表


  除了画线的内容外,其它的都是一样的,我们对不同的代码进行分析研究:

  1.             if(isset($fields[$fieldname]) && $fields[$fieldname]!=$buideType)
  2.             {
  3.                 $tabsql = "ALTER TABLE `$trueTable` CHANGE `$fieldname` ".$ntabsql;
  4.                 $dsql->ExecuteNoneQuery($tabsql);
  5.             }
  6.             else if(!isset($fields[$fieldname]))
  7.             {
  8.                 $tabsql = "ALTER TABLE `$trueTable` ADD ".$ntabsql;
  9.                 $dsql->ExecuteNoneQuery($tabsql);
  10.             }
复制代码



  先判断一下是不是字段的类型已经修改了,字段的类型也就是如下图所示类型:

字段类型

字段类型


   如果这个类型已经改了,那么,就要更改表$trueTable的类型,否则,如果这个字段都不存在,则直接在$trueTable表里面添加这个字段。

  然后,处理表#@__diyforms,也就是更新这个里面的表的内容:
  1. $dsql->ExecuteNoneQuery("UPDATE #@__diyforms SET info='$oksetting' WHERE diyid='$diyid' ");
复制代码


  这个字段的更新就研究这些就够了,当然,前提是你真正把添加字段和修改字段都弄明白了。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|织梦二次开发

GMT+8, 2019-9-17 20:48 , Processed in 0.219901 second(s), 26 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表