dedecms織夢自定義表單添加地區三級聯動正確的修復方案

因客戶需求要做一個三級地區聯動的自定義表單,於是就百度 :結果沒有一個可行的 ,後來找到一個可行的,但是隻能調用出來二級聯動,這肯定不行,於是自己來吧。百度果然不靠譜,全是各自抄來抄去!通過此方法操作的,自定義表單將可以添加任意三級聯動,包括自定義三級聯動,不再僅限地區聯動,只需要修改其中聯動標識即可 ,例如地區的標識爲nativeplace

第一步:開啓聯動表單選項

1、修改的文件:dede/templets/diy_field_add.htm 大概146 行,很明顯已經註釋掉,我們把註釋去掉,改好後,保存即可!

2、修改的文件:dede/templets/diy_field_edit.htm 大概在127行,很明顯已經註釋掉,我們把註釋去掉,然後放到“多選框”下面。

完成以上兩步操作,在自定義表單中就有了聯動類型選擇了。

第二步:後臺顯示枚舉數字修復爲中文

打開 找到dede/templets/diy_list.htm文件中,找到

1

2

3

4

5

6

    else if($fielddata[1]=='addon')

             {

    

          $fields[$field] = "<a href='{$fields[$field]}' 

target='_blank'><img src='images/channeladd.gif' border='0' /> 其它附件</a>";

             }

  在其 下面 添加如下代碼

1

2

3

  else if($fielddata[1]=='stepselect')       { 

        $fields[$field] = $em_nativeplaces[GetEnumsTypes($fields[$field])['top']].$em_nativeplaces[GetEnumsTypes($fields[$field])['son']].$em_nativeplaces[GetEnumsTypes($fields[$field])['sun']];

       }

 打開 dede/diy_list.php文件,找到

 else if ($action == 'list')
{

include_once DEDEINC.'/datalistcp.class.php';
 在下面添加如下代碼


    include_once(DEDEDATA.'/enums/nativeplace.php');
    include_once(DEDEINC."/enums.func.php");
 

打開 include/enums.func.php文件,找到

/**
 *  獲取聯動表單兩級數據的父類與子類
 *
 * @access    public
 * @param     string  $v
 * @return    array
 */
function GetEnumsTypes($v)
{
    $rearr['top'] = $rearr['son'] = $rearr['sun'] = 0;
    if($v==0) return $rearr;
    if($v%500==0) {
        $rearr['top'] = $v;
    }
       else{

 $rearr['son'] = $v;
        $rearr['top'] = $v - ($v%500);
    }
    return $rearr;
}
 

修改爲

/**
 *  獲取聯動表單兩級數據的父類與子類
 *
 * @access    public
 * @param     string  $v
 * @return    array
 */
function GetEnumsTypes($v)
{
    $rearr['top'] = $rearr['son'] = $rearr['sun'] = 0;
    if($v==0) return $rearr;
    if($v%500==0) {
        $rearr['top'] = $v;
    }
       else{
    $rearr['sun'] = $v;
        $rearr['son'] = intval($v);
        $rearr['top'] = $v - ($v%500);
    }
    return $rearr;
}
 

  

至此已經完成自定義表單三級聯動的調用修復,並且能正常使用,新增三級聯動也能正常,但地區三級聯動不能正常使用,經過排查發現係數據表存在問題,需要逐條修復,另外地區數據屬於2005年區劃之前的過期數據,需要進行更新,爲此我們技術花費1~2時間進行數據的更新修復

正確的三級聯動數據如下,你們可以自行去探索一下看看是不是所有三級聯動的枚舉值都是這個規律,除了地區的不是這個規律,所以這個數據是有問題的,它這個和其他三級聯動的存在衝突,需要修復數據,問題在於三級選擇的枚舉值

當然我們有爲大家準備好了數據庫修復包,只是伸手黨抄襲黨太多,我們不打算免費提供,而且我們技術也是花了十幾二十多個小時才做的修復包,希望大家能尊重我們的勞動成果,大家也可以自行修復

微信掃碼購買修復包

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章