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

简介: 最近在使用织梦做站的时候,客户用了自定义表单的情况下 其中有一个字段是一个下拉菜单,织梦原带的样式基本不能满足要示,所以自己做了样式,那么怎么才能做到,用户修改了下拉框的值,前台及时做出改变呢, 看了一下代码,发现了大体上流程是这样的 post_diyform.htm中有这样的代码,表示$postform是生成的代码 <?phpecho $postform; ?>

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

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

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

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} 


相关文章
|
监控 安全 JavaScript
网络安全开发架构之基于规则引擎的开发架构
规则引擎是一种软件工具或库,用于管理和执行业务规则。它提供了一种灵活且可扩展的方式来处理复杂的业务逻辑、决策制定和规则管理。规则引擎使得规则的定义、配置和执行变得更加可管理和可维护
802 0
|
Java 开发者 Spring
springboot松散绑定
springboot松散绑定
|
11月前
|
机器学习/深度学习 人工智能 自然语言处理
探索未来编程:Python在人工智能领域的深度应用与前景###
本文将深入探讨Python语言在人工智能(AI)领域的广泛应用,从基础原理到前沿实践,揭示其如何成为推动AI技术创新的关键力量。通过分析Python的简洁性、灵活性以及丰富的库支持,展现其在机器学习、深度学习、自然语言处理等子领域的卓越贡献,并展望Python在未来AI发展中的核心地位与潜在变革。 ###
|
人工智能 自动驾驶 机器人
云栖Day1重磅合集! Qwen2.5-72B成为全球最强开源模型
今天,2024云栖大会正式开幕 通义千问重磅开源Qwen2.5 性能超越Llama 405B 继续稳居最强开源大模型位置
1127 9
|
安全 定位技术 网络安全
安全策略中的访问策略
【8月更文挑战第11天】
384 3
|
关系型数据库 MySQL 数据库
深入浅出MySQL索引优化:提升数据库性能的关键
在这个数据驱动的时代,数据库性能的优劣直接关系到应用的响应速度和用户体验。MySQL作为广泛使用的数据库之一,其索引优化是提升查询性能的关键。本文将带你一探MySQL索引的内部机制,分析索引的类型及其适用场景,并通过实际案例演示如何诊断和优化索引,以实现数据库性能的飞跃。
|
数据采集 程序员 测试技术
程序员如何准备好一次高质量的汇报?
为什么掌握汇报能力很重要? 可能很多同学会说“我这种基层打工人不需要做年终述职了,跟周报一样写个书面总结就行了,至少现阶段跟我无关。” 当然,不少企业为了节省时间,对基层员工或基层管理者来说是不需要做述职汇报或者年终汇报的,仅提交书面形式的年终总结即可。 但实际情况是,无论是晋升述职、提案汇报,还是与客户售前交流、项目实施讲解,处处场景都要用到汇报技能,汇报是每一位职场人在成长的过程中都应该掌握的技能。 所以建议大家在日常工作中尽量珍惜每一次上台的机会,并从中积累汇报经验。
693 1
程序员如何准备好一次高质量的汇报?
|
弹性计算
阿里云存在未支付订单导致无法下单解决方法
解决阿里云存在未支付订单请支付或作废后再下单,阿里云服务器或其他云资源无法立即购买,提示“您选择的资源存在未支付订单,请支付或作废后再下单!”什么原因?这是由于你的阿里云账号之前已经创建了该订单,只是订单没有支付,所以无法再次创建订单。解决方法是,要么取消之前的订单,要么支付之前的订单。阿里云百科来详细说下阿里云账号下存在未支付订单的解决方法:
1670 0
阿里云存在未支付订单导致无法下单解决方法
|
定位技术
怎么忽然都在说钉钉变好用了?
怎么忽然都在说钉钉变好用了?
354 0
|
资源调度 调度
OKCC和VOS两者结合有什么作用?
OKCC和VOS两者结合有什么作用?