【问题标题】:Saving Zend Framework forms in a database在数据库中保存 Zend Framework 表单
【发布时间】:2011-11-28 18:22:53
【问题描述】:

我正在为 Zend 框架构建一个表单生成器/构建器。它是为客户准备的,因为客户想在不编写代码的情况下构建表单,所以我需要一个拖放界面。用户必须能够将预定义的表单元素拖放到容器中才能创建表单。这是简单的部分,我几乎自己解决了。 更难的部分,问题是关于这个表格的保存。我希望将此表单保存在 MySQL 数据库中。我该如何处理?

我在想:

  • 将元素保存到数据库中
  • 将表单保存到数据库中,包括元素 id 的
  • 扩展 Zend_Form 类,以便在请求表单时加载所有元素并创建所需的 php 代码,以便在需要编辑时呈现和填充。

有没有人有更好的建议,或者这是要走的路?

欢迎任何意见!

【问题讨论】:

    标签: php zend-framework zend-form


    【解决方案1】:

    前段时间我试图做同样的事情。

    似乎最好的选择是将 Zend Forms 保存为 Zend_Config 格式(inixml,通过 JavaScript 更容易处理)。

    但实际上并不需要生成器。我刚刚在我的 IDE 中创建了快捷方式(用于表单元素、验证器等),因此我可以轻松扩展抽象 My_Form

    考虑共享您的生成器的代码,也许其他一些程序员可能会加入并提供帮助。

    【讨论】:

    • 感谢您的输入,但是如何将某些内容保存到 ini 文件并检索它?只是使用 fwrite,使用一些特定的命名方案,然后检索它?至于生成器,我编辑了主要问题。
    • @Janis 有作家,例如Zend_Config_Writer_IniZend_Config_Writer_Xml
    • 我选择了这个答案作为最佳答案,因为它提供了最大的灵活性。它允许我使用 Zend_From 以及使用 jQuery 实现我自己的验证方法和渲染方法。
    【解决方案2】:

    我现在不得不这样做几次......而且很简单。

    1. 存储所需信息:标签、字段名称、类型、选项等(如果需要,您可以使用验证器/过滤器)。

    2. 通过迭代数据库存储的字段动态生成表单,使用类型/选项创建每个元素。

    【讨论】:

    • 感谢您的意见。这是我打算这样做的原始方式。现在有3种可能的情况。哦……怎么办,怎么办……:)
    【解决方案3】:

    ZF 中的大多数类都可以序列化,因此如果您的系统已经负责构建表单元素,那么您可能拥有一个 Zend_Form 对象。

    只需对其进行序列化()并将其存储在文本或中文本字段类型中。当您重新加载它时,只需 unserialize(),您就拥有了一个函数 Zend_Form 对象。

    【讨论】:

    • 好的,类的整个缓存和序列化对我来说是新事物。那么,我是否像这样使用它: $var=unserialize($serialized_class); $var->render(); ?举个例子?
    • 大多数变量都可以在 PHP 中进行序列化,除了资源到诸如打开的数据库连接或文件之类的东西。如果您将表单的序列化版本存储在数据库中,您应该能够在从数据库加载它后再次唤醒它(取消序列化它)。只需在文本字符串上调用 unserialize() 并测试以确保它是有效的 Zend_Form 类。如果是,您可以将它用作普通的 Zend_Form 类,并在视图中简单地回显它以呈现它。请注意,文本字符串可能很长,我刚才用一个包含 9 个元素的表单对其进行了测试,序列化字符串为 3
    • 在此处添加评论时遇到了一些问题,对此感到抱歉。该消息的结尾应该说明具有 9 个元素(即表单字段)的表单的序列化表单长度为 34,000 个字符。
    猜你喜欢
    • 1970-01-01
    • 2015-03-24
    • 1970-01-01
    • 2012-02-24
    • 2015-06-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多