2010-10-28 49 views
0

我正在爲Zend Framework構建表單生成器/構建器。它適用於客戶端,因爲客戶端不需要進入代碼就可以構建表單,所以我需要拖放接口。用戶必須能夠將預定義的表單元素拖放到容器中以創建表單。這是簡單的部分,我幾乎解決了自己。 更難的部分,問題是關於這種形式的保存。我希望將此表單保存在MySQL數據庫中。我會如何處理這個問題?在數據庫中保存Zend Framework表格

我在想:

  • 元素保存到數據庫中
  • 保存形式爲DATABSE,包括元素ID的
  • 擴展Zend_Form類,這樣,當被請求的形式,它會加載所有元素並創建所需的php代碼,以便可以渲染並填充它,如果需要進行編輯。

有沒有人有更好的建議,或者這是要走的路?

任何意見歡迎!

回答

0

前段時間我試圖做同樣的事情。

似乎最好的選擇是以Zend_Config格式(inixml,這更容易通過JavaScript進行處理)保存Zend表格。

但是發電機並不是真的需要。我在我的IDE中創建了快捷方式(用於表單元素,驗證器等),所以我可以輕鬆地擴展抽象My_Form

考慮共享您的生成器的代碼,也許其他一些程序員可能會加入並提供幫助。

+0

感謝您的輸入,但是如何才能將某些內容保存到ini文件並檢索它?只需使用fwrite,使用一些特定的命名方案,然後檢索它?至於發電機,我編輯了主要問題。 – 2010-10-28 19:59:27

+0

@Janis有作家,例如'Zend_Config_Writer_Ini'或者'Zend_Config_Writer_Xml' – takeshin 2010-10-29 15:56:26

+0

我選擇這個答案是最好的,因爲它允許最大的靈活性。它允許我使用Zend_From以及使用jQuery實現自己的驗證方法和呈現方法。 – 2010-11-02 09:55:26

0

我不得不這樣做了幾次現在...這很簡單。

  1. 存儲所需信息:標籤,字段名稱,類型,選項等(如果需要,可以使用驗證器/過濾器)。

  2. 通過遍歷數據庫存儲的字段,使用類型/選項來創建每個元素,動態生成表單。

+0

感謝您的輸入。這是我原來要這樣做的原始方式。現在有三種可能的情況。呵呵......做什麼,做什麼... :) – 2010-10-29 01:30:15

0

中的大多數類ZF可序列化,因此,如果您的系統已經負責建設的表單元素想必你有一個Zend_Form的對象。

只需序列化()它並將其存儲在文本或中文字段類型中。當你加載它時,只需要unserialize(),你就有了一個功能強大的Zend_Form對象。

+0

好了,這整個緩存和類序列化是我新的東西。那麼,我是否像這樣使用它:$ var = unserialize($ serialized_class); $ VAR->渲染(); ?爲例子? – 2010-10-29 01:28:14

+0

除了開放數據庫連接或文件等資源之外,大多數變量都可以用PHP進行序列化。 如果您存儲在數據庫中的形式的序列化版本,你應該能夠再次喚醒它(反序列化的話),一旦你從數據庫中加載它。只需在文本字符串上調用unserialize()並進行測試以確保它是一個有效的Zend_Form類。如果是這樣,你可以將它用作普通的Zend_Form類,只需在視圖中回顯它就可以呈現它。請注意,文本字符串可能很長,我剛纔用一個帶有9個元素的表單測試了它,並且序列化的字符串是3 – simonrjones 2010-10-30 21:04:58

+0

在添加註釋時出現了一些問題,對此抱歉。該消息的結尾應該說,具有9個元素(即表單字段)的表單的序列化形式出現在34,000個字符長。 – simonrjones 2010-10-30 21:11:27