【问题标题】:ExtJS load form items/fields from databaseExtJS 从数据库中加载表单项/字段
【发布时间】:2010-12-19 11:40:04
【问题描述】:

我在这里使用 ExtJS 3。我想从数据库中填充一个表单面板,其中包含要提交的字段。基本上,我不知道我的表单将拥有的女巫字段,我想从数据库中生成所有表单面板项目。我可以生成一个 JSON 字符串,作为来自 PHP 文件的响应,其中包含字段和所有内容,但我需要知道如何在 ExtJS 中使用它。

有什么帮助吗?

谢谢。

【问题讨论】:

    标签: php database extjs formpanel


    【解决方案1】:

    您将不得不以 ExtJS 可以理解的格式加载和发送字段。如果您不介意直接耦合到 ExtJS 格式,最简单的方法是在后端生成 ExtJS 模板样式。在这种情况下,您的 php 脚本会生成如下内容:

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

    显然,您可以重新排列它,以便预先在循环中构建“items”数组,您可以根据需要添加任意数量的项目。

    此外,根据您的设置方式,您还可以只返回项目数组并将它们即时添加到表单中,无需发送“新的 Ext.form.. etc”部分,并且更好地解耦你的代码。就个人而言,这就是我要走的路。

    编辑:

    在回复您的评论时,如果您以适当的 ExtJS 结构返回 JSON 数组,您需要做的就是使用“panel.add(myItems);” [1] 方法,并且可能调用“panel.doLayout();”强制它重新渲染得很好。

    查看“组件”[2] 的详细信息,了解 xtype 的工作原理。

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

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

    【讨论】:

    • 我想返回如下内容:[{"fieldLabel":"Documents","labelSeparator":"","boxLabel":"","name":""},{ "fieldLabel":"Users","labelSeparator":"","boxLabel":"","name":""}] 使用 PHP 并以某种方式将此项目配置加载到已经呈现的 formPanel 中。我可以这样做吗?谢谢。
    • 我现在不在我的电脑前,但我稍后会尝试。这似乎是有道理的,我认为它会奏效。谢谢。
    【解决方案2】:

    我知道这是一篇旧帖子,但我还是会修改它,因为它首先出现在我的 Google 搜索中。

    我很幸运地从 Ext.Ajax.request 返回了一个 JSON 字符串,eval() 它(我知道,我知道,邪恶 - 但它有效并且 Ext.Decode 无论如何都使用 eval) - 然后传递结果eval 变成 Panel.add(Ext.ComponentManager.create(eval_result));

    希望这对某人有所帮助。

    【讨论】:

      猜你喜欢
      • 2013-06-01
      • 2011-11-30
      • 1970-01-01
      • 2012-02-10
      • 1970-01-01
      • 2013-07-07
      • 1970-01-01
      • 1970-01-01
      • 2023-03-07
      相关资源
      最近更新 更多