1. 程式人生 > >自定義表單原理和實現思路(未完待續)

自定義表單原理和實現思路(未完待續)

自定義表單的用途比較廣泛,在OA的自定義工作流程中、CMS功能擴充套件、自定義調查中都將涉及到。為什麼要使用自定義表單呢?試想一下,如果某個系統中沒有自定義表單功能,而要實現增加功能或系統擴充套件,會怎麼樣?這時只能依靠介面設計師與程式設計師配合再做一個表單及編寫程式碼來處理表單,處理表單的程式碼是枯燥而機械重複的,因為這樣的程式碼無非是一些增、刪、改、插,對一般的程式設計師來說,似乎太簡單了;對一個專案來講,如果客戶需要的表單很多,可想而知,這樣的程式碼將會有多少重複的,雖然生成程式碼的工具不少,可以減少一些工作量,但也會讓整個系統變的更龐大,維護也不是那麼方便,假如客戶要加個資料項或改個什麼的,整個專案又得重新編譯。誠然,開發一套自定義表單系統是需要耗費不稍精力,佔用一些專案時間,但有了這個平臺之後,對以後的其他專案開發或者系統本身的功能擴充套件還是有很大幫助的。

上面列舉了一些自定義表單的種種好處,我們應該怎麼實現它呢。自定義表單就是將上面的情況進行抽象,通過表單的定義自動建立/修改自定義資料表、動態生成資料表操作的SQL語句並執行。當然首先要知道一般的自定義表單系統包含哪些功能。我想的話,可分為這樣幾部分:表單定義管理部分、表單呈現/提交部分、表單資料檢視/管理部分。

表單定義管理:表單基本資訊管理(表單名稱、描述)、表單儲存表字段管理、表單佈局設計、表單資料驗證定義、表單欄位關聯/子表單管理、表單欄位編輯框行為管理。

表單基本資訊定義比較簡單就不說了。

表單儲存表字段定義:定義表單中用到的資料項,包括欄位名、欄位型別、長度、預設值、編輯框型別、是否允許為空、是否自增長欄位、分組名稱、是否在列表中顯示等資訊。編輯框型別一般有:文字框、文字域、複選框、單選框、列表框、時間日期選擇、檔案上傳框等;這裡定義的是表單主表字段,注意每張表單僅針對一張表,否則操作多張表的SQL不容易處理,涉及到主從表的情況可用子表單來處理。

表單佈局設計:這一步是很關鍵也是較難實現,簡單的做法是做一個表單模板,那麼表單中的資料項說明、編輯框、資料驗證就都可以用內部變數來代替,系統可提供自動生成表單的功能,使用者也可以自己手工修改,當然能夠提供一個表單設計器就完美了,使用起來就更方便的了。

表單資料驗證定義:定義需要驗證欄位的規則,驗證規則,可用正則表示式的方式來定義,系統內部可自帶一些常用的驗證規則,複雜的情況可能會出現各欄位之間的值進行比較的情況。

表單欄位關聯/子表單管理:定義表/表單之間的關聯資訊,即主鍵外來鍵資訊。

表單欄位編輯框行為定義:主要負責處理欄位值發生變化時引發的其他編輯框事件,比如連動下拉框、從選擇值中返回值並賦予其他欄位編輯框、其他編輯框的隱藏等。

表單執行時呈現及提交

根據表單定義的佈局及其他設定呈現表單,並一起生成驗證、行為用到的JS程式碼。如果填寫表單時,先填主表資訊,然後填寫從表資訊,多個表單之間要進行跳轉,儲存的臨時表單值可採用SESSION進行傳遞,最後一起提交,提交時先寫入主表資訊,並返回主鍵值(如果存在主從表的話),然後寫從表資料。

表單資料管理

可根據欄位配置資訊顯示錶單的資料列表,並進行管理,這一步實現比較簡單。

相關推薦

定義原理實現思路待續

自定義表單的用途比較廣泛,在OA的自定義工作流程中、CMS功能擴充套件、自定義調查中都將涉及到。為什麼要使用自定義表單呢?試想一下,如果某個系統中沒有自定義表單功能,而要實現增加功能或系統擴充套件,會怎麼樣?這時只能依靠介面設計師與程式設計師配合再做一個表單及編寫程式碼來處理表單,處理表單的程式碼是枯燥而機

回溯法 無集問題待續

問題描述: 設S是正整數集合。S是一個無和集,當且僅當x,y∈S,蘊含x+y!∈(不蘊含)s. 對於任意正整數k,如果可將{1,2,...k}劃分為n個無和子集s1,s2...sn,稱正整數k是n可分

CSS寫作建議性能優化總結待續

小結 body 補充 代碼 寫作 體積 性能優化 logs 一點 這裏是我從網上的一篇文章看過來的,這裏先做一點小結,之後再補充。 1.CSS渲染規則 今天在微博的一篇文章上看到的,之前我都以為渲染是從左往右渲染。發現我的想法是錯的。之所以采用從右往左的渲染規則,是因為這樣

Exp2 後門原理與實踐待續

bin image alt job 模塊 加強 ont .sh 問題 Exp2 後門原理與實踐 實驗環境 攻擊機 kali 4.14(64位) (IP: 10.0.2.6/24) 靶機 ubuntu 16.04(32位) (IP: 10.0.2.4/24) windo

MNIST手寫數字圖片識別線性回歸、CNN方法的手工及框架實現待續

shape 初始化 result rect not found pro res edi ise 0-Background 作為Deep Learning中的Hello World 項目無論如何都要做一遍的。 代碼地址:Github 練習過程中將持續更新blog及代碼。 第一

Internet of Lights and Switches 湖南2015省賽 (字首異或+map) 待續

題面: You are a fan of “Internet of Things”(IoT, 物聯網), so you build a nice Internet of Lights and Switches in your huge mansion. Formally, there

劍指Offer:面試題33——把陣列排成最小的數(java實現)待續

問題描述: 輸入一個正整數陣列,把數組裡所有數字拼接起來排成一個數,列印能拼接出的所有數字中最小的一個。例如輸入陣列{3,32,321},則打印出這三個數字能排成的最小數字為321323。

jq+layui之table每行的編輯按鈕只能點擊觸發一次的問題的解決待續

控制臺 技術分享 目標 分享圖片 地方 觸發 div 一次 可見   在寫好表之後,測試時會發現,當你點擊第一行的“修改”,突然不想修改了,關閉了“修改”的彈窗,但是這時候你想到剛才第一行的修改還有地方要修改,你重新點擊“修改”按鈕,這時候它似乎故意跟你過不去似的,修

retrofit2原理學習待續

最簡單的okhttp+retrofit2使用demo retrofit = new Retrofit.Builder()         .baseUrl("https://api.douban.com/v2/")         .build();service= r

織夢後臺定義,中文不顯示,數字字母顯示的解決辦法

數字和字母 如果 PE spa templet lsp 文件 html fields 1.找到 找到dede/templets/diy_list.htm 這個文件。 2.找到htmlspecialchars($fields[$field]); 這個位置,請在工具

織夢定義新增訪客提交時間訪客IP+限制每天每個IP提交次數

織夢給自定義表單新增訪客提交時間 不需要在模板htm裡新增js或者其他程式碼,按下面步驟來即可。 1、後臺 - 核心 - 頻道模型 - 自定義表單 - 新增新欄位 提交時間 time 單行文字(varchar) 2、開啟 /plus/diy.php 找到 $fiel

DedeCMS實現定義提交後傳送指定郵箱的方法

連結: https://pan.baidu.com/s/1t7F8eah3Bw-97jsKNqiQQg 提取碼: gs6j  一、登陸QQ郵箱——設定——賬戶,找到POP3/IMAP/SMTP,開啟,現在的郵箱開啟POP3/SMTP都要授權碼,記下你的授權碼,等一下是作為密碼使用的

phpcms v9定義提交後返回上一頁實現方法

最新福利:領取阿里雲1000通用代金券 PHPcms v9中提交自定義表單後預設都是回到首頁的,是不是感覺很不爽!接下來,就說下phpcms v9自定義表單提交後返回上一頁實現方法。1、找到這個檔案 phpcms\modules\formguide\index.php2、找到如下程式碼showm

基於ckeditor實現定義

最近公司的一個系統需要自定義表單,根據以往使用ckeditor的經驗突發奇想,用ckeditor編寫外掛的方式實現了一個自定義表單系統。下面簡單介紹一下表單設計器的設計思路。 表單設計器原理 表單智慧設計器的設計思想是基於ckeditor富文字編輯器,開發HTML表單中需要

工作流實現定義

定義概述:一個已經做好的表單需要繫結到節點上。 自定義表單工作模式:流程控制按鈕區域是ccflow來完成,表單區域是放在控制區域下面的框架裡。 注意:藍色邊框一下是一個框架,框架裡面的介面是一個url,這個就是自定義表單。 應用背景:這種型別是解決我自己已經有了一個成

使用DEDECMS織夢帶的郵件功能實現定義郵件通知

用DEDECMS(織夢)做開發的時,有些客戶可能要求自定義表單提交後向指定郵箱傳送郵件通知這樣的功能。我搜索了一下,網上的程式碼基本都是一樣的,就是使用 PHPMailer 來實現。但其實DEDE本身就已經帶有了郵件功能,為什麼我們還要藉助 PHPMailer 來實現呢?今

企業級定義引擎解決方案--實體物件模型實現

實體物件模型與資料庫對應實現   主要是解決實體物件模型與資料庫之間的一一對應,在介面上新增實體物件模型,增加欄位,則同步管理業務實體資料庫表結構,主要的思路就是介面上修改了實體模型,同步執行修改資料庫表結構的Sql語句(已經運行了一段時間的業務表,需要DBA實現修改資料庫再修改實體模型),介面大概如下:

java sql編輯器 動態報表 數據庫備份還原 quartz定時任務調度 定義 SSM

大小 demo 結構 圖片顯示 登錄 效果 tab 雙向 mar A 調用攝像頭拍照,自定義裁剪編輯頭像,頭像圖片色度調節B 集成代碼生成器 [正反雙向](單表、主表、明細表、樹形表,快速開發利器)+快速表單構建器 freemaker模版技術 ,0個代碼不用寫,生成完整的一

定義流程gooflow2.0+定義

log ges bapi cnblogs 語句 參與者 源碼 -1 通過 一、功能簡介 gooflow功能清單1、自定義流程繪制2、自定義屬性添加3、支持3種步驟類型普通審批步驟自動決策步驟手動決策步驟 4、決策方式(支持js決策,sql語句決策) 5、審批人員參與方

java sql編輯器 動態報表 數據庫備份還原 quartz定時任務調度 定義 java圖片爬蟲

springmvcmybatis整合 bootstrap 框架源碼 spring html5 官網 http://www.fhadmin.org/A代碼編輯器,在線模版編輯,仿開發工具編輯器,pdf在線預覽,文件轉換編碼B 集成代碼生成器 [正反雙向](單表、主表、明細表、樹形表,快速開