2010-02-17 30 views
0

我是zend框架的新手,但成功完成了第一步。 到目前爲止,我創建了一些Zend_Forms,它們將我的模型 的單條記錄映射到表單域。我已經爲每種情況處理了表單類的表單。 直到現在,這一切都很好。Zend Framework:將多個數據庫記錄作爲複選框處理

現在我有這種情況,我必須爲產品設計特徵。功能和產品是我的應用程序的一部分。功能以三個表格存儲在我的數據庫中。 對於每個功能,在第三個表中有一個記錄

  • 首先是保存要素組名稱的要素組。每個功能都應該被分配到一個功能組。

  • 第二個表是功能表。該表具有要素組的外鍵和要素的名稱。

  • 第三張表是將功能連接到產品的一種多對多關係。該表具有一個附加字段,其中包含該產品此獨特功能的可選值(除了兩個外鍵)。

例如:如果產品具有的4,78公斤值「4,78」的權重被存儲在第三表和標籤「重量的%S公斤」被存儲在第二表。特徵組可以是像「物理屬性」已保存在第一個表中的東西。

爲了削減長話短說: 我的問題是如何處理,我要的情況下創建並以某種形式編輯多個數據庫記錄。 該計劃是爲每個功能的複選框設置一個表格,其中功能按照進行了分組。每個複選框應該有一個輔助文本字段來輸入可選值。

回答

0

您可以嘗試擴展Zend_Form來創建自己的元素。

您將能夠編寫一個連接到數據庫以獲取屬性的類(功能&產品)。

假設你寫My_Form_Element_Features & My_Form_Element_Products類,你可以做$features = new My_Form_Features();,然後使用基類的方法,如getValues()populate()

你可以去看看那裏開始:

-

爲了回答您的意見,您可以使用:

Zend_Form::setElementsBelongTo($array): 

更多信息,Zend_Form Advanced manual page找到。

+0

我已經將我的表單類連接到數據庫。但目前我不確定如何從我從數據庫中獲得的數組構建表單。我試過它的子表單,但我無法獲得像productfeature [groupid] [featureid] [fieldname]字段名稱... – sober 2010-02-18 10:12:00

+0

感謝關於Zend_Form :: setElementsBelongTo($ array);的提示。但是手冊沒有描述如何使用這種方法。你知道一個很好的教程嗎?提前致謝。 – sober 2010-02-18 13:00:56

0

你可以製作一個自定義表單類來擴展Zend_Form,並將它用於你的類。 它可以在你的模型的構造實例中構建實例並基於該模型構建表單輸入。 在您的控制器表單驗證後,你可以做

$values = $form->getValues(); 

,並使用該數組來填充你的模型再次

0

你可以試試你的表單類中創建子窗體(Zend_Form_SubForm的)。這可以分隔不同表格的字段。對於版本,在您的控制器中,當您從樹表中提取所有數據時,可以填充與表對應的子表單。

+0

也許子表單是解決這個問題的正確方法。但是,我怎樣才能從二維數組創建子窗體結構? – sober 2010-02-18 10:09:24