【问题标题】:Form generation on the fly / Dynamic forms / forms generated from models [closed]动态生成表单/动态表单/从模型生成的表单[关闭]
【发布时间】:2010-08-29 21:04:42
【问题描述】:

有没有人建议构建类似 wufoo.com 的应用程序?我正在构建一个应用程序,其中登录用户以类似的方式创建表单......我想知道 zend、symfony 或 yii 是否最适合这个?

我将在这里收集提示,以方便其他人查看。

可以帮助解决此问题的框架的优势:

  • Symfony 有原则(但表单是通过运行脚本来部署的?)
  • Zend 有它的形式和子形式 整合(也许整合 教义是可能的吗?)
  • Zend 有 form_decorators,但它们的学习门槛很高。
  • yii 有它的表单生成器和良好的 PDO 数据库连接

或者是否有任何其他框架可以简化“动态生成表单”?

PS。 djangos 的解决方案很有意思,但需要在 php 中。

【问题讨论】:

    标签: php zend-framework forms symfony1 yii


    【解决方案1】:

    我想不出有什么专门专门用于动态生成表单。这看起来更像是一个基于 Javascript 的项目,因此您最终可能也会使用大量基于 Javascript 的项目。

    此外,表单生成并不像使用框架那么容易,尤其是对于那些不会使用特定框架的人来说。许多框架添加隐藏字段或以某种方式命名字段。我敢打赌,尝试使用预制框架为普通人群制作东西最终会比提出您自己的解决方案更令人头疼。

    如果你坚持使用 PHP 来生成表单,那么我现在会跳过 Javascript 并提出一个适用于简单 HTTP 请求的解决方案,然后考虑使用 JS 框架来生成表单“动态地”。

    【讨论】:

      【解决方案2】:

      我不知道其他框架,但我可以说一下 Zend 框架。它的 Zend_Form 类非常强大和灵活。它非常适合这样的项目,但 Zend_Element_Decorators 的学习曲线很陡峭。

      使用 Zend,您可以使用 Zend_Db 将有关表单的信息存储在数据库中,并使用它的 addElement() 函数来构造 Zend_Form 以创建所需的元素。

      肯定使用它比滚动你自己的表单生成更好。据我所知 Zend_Db 和 Zend_Form 之间没有接口,但你可以写一个。 Zend 非常灵活,您几乎可以为所欲为。

      也许其他框架更好,我不知道。

      【讨论】:

      • 谢谢。我还没有看过 form_element_decorators 但它看起来很有希望。现在我在 Yii 工作,它有从数组中渲染表单的不错的方法(可以从数据库中获取)。
      【解决方案3】:

      通常使用 symfony 我知道使用 symfony 可以做到这一点。您可以通过这种方式即时生成表单。我认为 Zend Framework 以类似的方式做到这一点,所以这也是一个合适的选择。

      你将如何在 symfony 中做到这一点,尽管它有点“弯曲”框架:

      1. 创建一个包含表单(名称等)的表和一个包含表单域(类型、名称、必需)的表
      2. 使用configure() 方法创建一个sfForm 类,该方法为给定表单拉取字段并将表单字段动态添加到$this->widgetSchema,并将验证器添加到$this->validatorSchame
      3. 去 :)

      这有点不是表单框架的用途(以这种方式动态字段),但我已经成功地将它用于一些项目。

      关于 Codacula 提到的 Javascript:我认为问题中没有任何内容可以支持所提到的 Javascript 用法。这是 可能一些 Javascript 会涉及到这一点,但我认为这不是问题的一部分。

      【讨论】:

        【解决方案4】:

        另一个值得一试的用 php 编写的表单构建器解决方案是 http://code.google.com/p/php-form-builder-class/。我已经在我的 Web 开发中使用了它,并且会推荐。它似乎写得很好,为我节省了很多时间来启动和运行项目。

        【讨论】: