2009-11-23 35 views
0

我在這裏使用ExtJS 3。我想從數據庫填充一個表單提交的字段。基本上,我不知道我的表單將會有巫婆領域,我想從數據庫中生成所有的formpanel項目。我可以生成一個JSON字符串作爲來自PHP文件的字段和所有內容的響應,但是我需要知道如何在ExtJS中使用它。ExtJS從數據庫加載表單項/域

任何幫助?

謝謝。

回答

1

您將不得不以ExtJS能夠理解的格式加載和發送字段。最簡單的方法是,如果您不介意直接耦合到ExtJS格式,則會在後端生成ExtJS模板樣式。在這種情況下,你的PHP腳本會產生這樣的:

new Ext.form.FormPanel({ 
    width: 350, 
    defaultType: 'textfield', 
    items: [{ 
    xtype: '<?php echo $field ?>', 
    value: '<?php echo $value ?>' 
    }] 
}); 

很明顯,你可以這樣重新排列這個「項目」陣列建成預先在一個循環中,並根據您的需要,您可以添加儘可能多的項目。另外,根據你如何設置,你也可以直接返回項目數組並將它們添加到表單中,不需要發送「新的Ext.form ..等」部分,也不需要發送新的Ext.form ..等部分,並更好地解耦你的代碼。就我個人而言,我就是這樣。

編輯:

在回答您的意見,如果你在一個適當的ExtJS的結構返回JSON陣列,所有你需要做的就是用「panel.add(myItems);」 [1]方法,並可能調用「panel.doLayout();」強制它重新渲染。

查看關於xtype如何工作的「組件」[2]的詳細信息。

[1] http://www.extjs.com/deploy/dev/docs/?class=Ext.form.FormPanel

[2] http://www.extjs.com/deploy/dev/docs/?class=Ext.Component

+0

我想返回類似於: [{「fieldLabel」:「Documents」,「labelSeparator」:「」,「boxLabel」:「」,「name」:「」},{「fieldLabel」: 「用戶」,「labelSeparator」:「」,「boxLabel」:「」,「name」:「」}] 與PHP和加載這個項目config配置到一個已經渲染的formPanel。我可以這樣做嗎?謝謝。 – 2009-11-23 14:29:34

+0

我現在不在我的電腦,但我會稍後再嘗試。這似乎是有道理的,我認爲它會起作用。謝謝。 – 2009-11-23 15:50:15

0

我知道這是舊的文章,但我會碰到反正它,因爲它在我的谷歌搜索想出了第一。 (我知道,我知道,邪惡 - 但它的工作原理和Ext.Decode無論如何使用eval) - 然後將結果傳遞給eval()將eval轉換爲Panel.add(Ext.ComponentManager.create(eval_result));

希望這可以幫助別人。