织梦自定义表单如何取出一个字段的值,并形成option

最近在使用织梦做站的时候,客户用了自定义表单的情况下

其中有一个字段是一个下拉菜单,织梦原带的样式基本不能满足要示,所以自己做了样式,那么怎么才能做到,用户修改了下拉框的值,前台及时做出改变呢,

看了一下代码,发现了大体上流程是这样的

post_diyform.htm中有这样的代码,表示$postform是生成的代码

<?php
echo $postform;
?>

在diy.php中有这样的代码

 

require_once DEDEINC.'/diyform.cls.php';
$diy = new diyform($diyid);

/*----------------------------
function Post(){ }
---------------------------*/
if($action == 'post')
{
    if(empty($do))
    {
        $postform = $diy->getForm(true);
        include DEDEROOT."/templets/plus/{$diy->postTemplate}";
        exit();
    }

生成的代码是,下边这些代码是diyform.cls.php中的

   function getForm($type = 'post', $value = '', $admintype='diy')
    {
        global $cfg_cookie_encode;
        $dtp = new DedeTagParse();
        $dtp->SetNameSpace("field","<",">");

        $dtp->LoadSource($this->info);
        $formstring = '';
        $formfields = '';
        $func = $type == 'post' ? 'GetFormItem' : 'GetFormItemValue';

        if(is_array($dtp->CTags))
        {
		//	var_dump( $zhuanye= $dtp->GetTag("zhuanye"));
		//	var_dump( $zhuanye->GetAtt('default'));

            foreach($dtp->CTags as $tagid=>$tag)
            {

可以看到,代码中使用了dedetagparse解析了保存的html代码,

所以我们仿照代码可以将select字段的默认值取出并分隔,生成option代码

    function getzy( )
    {
        $dtp = new DedeTagParse();
        $dtp->SetNameSpace("field","<",">");

        $dtp->LoadSource($this->info);
        $formstring = '';
        $formfields = '';
        $func = $type == 'post' ? 'GetFormItem' : 'GetFormItemValue';

        if(is_array($dtp->CTags))
        {
			$zhuanye= $dtp->GetTag("zhuanye") ;
			 $items = explode(',',$zhuanye->GetAtt("default"));
			 foreach($items as $v)
			{
				$v = trim($v);
				if($v!='') {
					$formstring.= "<option value='$v'>$v</option>\r\n";
				}
			}
		}
		return $formstring;
	}

这样就生成<option>代码,这样在post_diy.htm中加入对这个函数的调用就可以了

               <?php
               echo $diy->getzy();
               ?>

如果在其它页面如静态页面上如何调用呢?我们可以使用织梦中模板可以写php代码的方法,来解决,方法如下,

{dede:php}
require_once DEDEINC.'/diyform.cls.php';
$diy = new diyform(1);
echo $diy->getzy();
{/dede:php}
时间: 2024-08-04 12:34:27

织梦自定义表单如何取出一个字段的值,并形成option的相关文章

修改织梦自定义表单字段为必填

织梦的自定义表单功能可以让你轻松的创建自己的表单功能,收集用户的留言.订单等信息. 但是dedecms的自定义表单有一个缺点,没有验证功能,允许提交空表单,这样致使后台会显示很多空数据,不能收集到完整的用户信息.今天我们就要给dedecms的自定义表单添加一个必填内容验证功能: 1.修改diy_field_add.htm,24行左右添加代码 var necessary = theform.necessary[0].checked?theform.necessary[0].value:thefor

Domino 自定义表单遇到的一个关键问题

问题描述 这几天在处理自定义表单的几个问题.目前有一个比较麻烦的问题需要讨论一下.目前我我通过文档配置字段列表,根据字段生产表单html(read/edit).并且根据用户状态进行载入表单.表单通过公式或ajax方式载入,通过代理提供创建/更新文档.通过Request_Content获取域,并解析处理.目前问题是,如果Ajax提交表单内容会被urlencode发送,到服务器需要decode解码.使用@URLDecode解码具有2K长度限制.在网上找了很多的URLDecode都不能很好的解码.这个

如何查询出一个表中的其中一个字段的值在另一个表中不存在的记录

问题描述 有两个表:create table a( id VARCHAR(255) PRIMARY KEY, name CHAR(50));create table b( id VARCHAR(255) referrence foreign key a(id), name CHAR(50))问:如何查询出表a中id列的值在表b中不存在的记录.目前我能想到的方法是:SELECT *FROM ( SELECT a.*, b.id _id FROM a LEFT JOIN b WHERE a.id =

如何设置dedecms自定义表单必填项?

用dedecms自定义表单可以制作一个简单的预约系统,有些相关信息需要设置为必填项,比如联系方式,没有留下真实的电话或其他信息,以后要怎么联系到你的客户.那我们要如何设置织梦cms自定义表单必填项呢?随ytkah一起试试吧 一.先用一段php代码来判断验证码为必选项.找到文件plus/diy.php文件中的第40行左右加上以下代码: //增加必填字段判断 if($required!=''){if(preg_match('/,/', $required)){$requireds = explode

解决Dedecms自定义表单&quot;数据校验不对,程序返回&quot;错误

前几天给一个网站重装了DEDECMS系统,当时没有注意到表单这一块.今天来上班的时候同事跟新一反应了这个情况 由于自定义表单模板是也是DIY的.就跟着官方模板中的数据进行比较.测试得知,官方的模板中可以正常提交.也在比对中发现INPUT的参数dede_fieldshash的值不是一样子的.随即新一跟踪到/plus/diy.php    代码如下 复制代码 $dede_fields = empty($dede_fields) ? '' : trim($dede_fields); $dede_fie

织梦dedecms自定义表单设置必填项的教程

方法一:通过修改程序源文件实现 1.在plus文件夹下找到diy.php文件,对其进行编辑,在第40行左右找到代码: $dede_fields = empty($dede_fields) ? '' : trim($dede_fields); 2.在这行代码下面,添加以下代码后保存文件: //增加必填字段判断  if($required!=''){  if(preg_match('/,/', $required)){  $requireds = explode(',',$required);  f

用dedecms自定义表单创建简易自助预约系统

建站往往需要根据客户的需求来增加相应的功能,比如预约.平时用比较多的是织梦系统,那么如何用dedecms自定义表单创建简易自助预约系统呢? 进入dedecms后台,左侧菜单中依次点击"核心" - 频道类型 - 自定义表单 - [增加新的自定义表单] 点击后进入设置模版界面,这里可以不用动直接点击确定.当然名字那里可以修改成"预约". 点击上图中 "管理" 下的铅笔图标进行编辑 进入界面后我们可以通过添加新的字段来设置我们需要的栏目比如我们可以创建

UTF-8编码的网页如何自定义表单提交给百度搜索

有时,为了方便访问者直接在自己的网站调用百度的搜索功能,自己就自定义的写了一个表单来提交到百度的网址,代码如下: <form action="http://www.baidu.com/s" id="fbd" target="_blank">  <p class="tt">百度优化搜索</p>  <p class="input"><input type=&

activiti自定义流程之自定义表单(二):创建表单

注:环境配置:activiti自定义流程之自定义表单(一):环境配置 在上一节自定义表单环境搭建好以后,我就正式开始尝试自己创建表单,在后台的处理就比较常规,主要是针对ueditor插件的功能在前端进行修改. 由于自己的前端相关技术太渣,因此好多东西都不会用,导致修改实现的过程也是破费了一番功夫,头皮发麻了好几天. 既然是用别人的插件进行修改,那么我想如果只是单独的贴出我修改后的代码,可能没有前后进行对比好理解,因此这里就把原代码和修改后的同时对比着贴出,以便于朋友们能从对比中更快的得到启发.