织梦自定义表单如何取出一个字段的值,并形成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} 


相关文章
|
6月前
|
JavaScript 前端开发 Java
52jqGrid 分组 - 远程数据(grandtotals排序)
52jqGrid 分组 - 远程数据(grandtotals排序)
20 0
|
6月前
|
JavaScript 前端开发 Java
51jqGrid 分组 - 远程数据(排序过)
51jqGrid 分组 - 远程数据(排序过)
21 0
51jqGrid 分组 - 远程数据(排序过)
|
9月前
|
JSON 前端开发 数据格式
前端(二十一):label语句、with语句、JSON、生成器、解析赋值、历史状态管理、将页面可编辑
label语句、with语句、JSON、生成器、解析赋值、历史状态管理、将页面可编辑
103 0
|
前端开发 数据库
FineReport中使用一个搜索框查询数据库中多列值返回一列值:使用union函数
前端使用一个查询框(搜索框)查询数据库中多列值,这里使用数据库的union函数进行实现
173 0
|
JavaScript
VUE element-ui 之table表格勾选复选框动态带出(将某列的值赋值给指定列)对应列的数据
VUE element-ui 之table表格勾选复选框动态带出(将某列的值赋值给指定列)对应列的数据
882 0
VUE element-ui 之table表格勾选复选框动态带出(将某列的值赋值给指定列)对应列的数据
NoteExpress自定义题录表头显示字段
NoteExpress自定义题录表头显示字段
446 0
NoteExpress自定义题录表头显示字段
|
SQL PHP
DEDE在列表调用当前栏目的文章总数的修改方法
此方法适合织梦dedecmsv5.6及以上版本,其它版本暂未测试,修改方法如下: dede - 598080707.net 打开 include/common.func.php文件,在这个php文件里的?>之前,加上以下代码: function GetTotalArc($t...
817 0
|
SQL
【自然框架】表单控件 之 一个表单修改多个表里的记录
      FormView 确实挺方便的,不过他也有几个小问题,只把FormView拖到页面里是不行的,还得再拽几个文本框、下拉列表框这一类的控件,还得布局。然后还要弄一个DataSource的控件,利用这个控件把文本框等控件和字段对应上,DataSource也有一个致命的缺点,默认情况下,他是把SQL语句以属性的形式放在了.aspx页面里面。
883 0
select标签动态获取数据时如何控制下拉框长度
队列ID panelHeight="100" 设置下拉框的长度,panelHeight="auto"为自动匹配大小。
2463 0
|
PHP
Laravel返回不重复的某个字段信息列表
->groupBy('brand_id') ->pluck('brand_id');  学习交流群:364976091
1734 0