【问题标题】:Dynamic table fields for CakePHPCakePHP 的动态表字段
【发布时间】:2012-02-04 23:35:24
【问题描述】:

我正在尝试使用动态表格字段构建应用程序。这个想法是管理员可以在不更改 MySQL 表的情况下定义每个项目的哪些字段可用。

在字段中输入的数据应该是各种类型,例如文本、货币和布尔值,因此可以添加 $ 之类的后缀或显示布尔值的图像。此外,应将字段分配给组(以在 HTML 字段集中将它们分开)。最后,一个项目的每个字段都有一个值。

我希望项目的添加和编辑表单显示所有可能的字段。

所以我需要以下模型是对的:

  • Item(有很多值)
  • Field (belongsTo FieldGroup & FieldType (also hasMany Value??))
  • FieldGroup (hasMany 字段)
  • FieldType (hasMany 字段)
  • Value(属于项目和字段)

得到我需要的东西?

我真的不知道该怎么做的部分:每个项目只允许有一个值,但是因为模型Item hasMany Values 可以有多个。

我如何将具有组和类型的字段添加到 Item 中的表单中?我正在尝试使用loadModel('Group');(正确吗?)来获取它们,然后将数组$fieldsByGroups = $this->Group->find('all') 分配给添加/编辑模板并执行foreach($fieldsByGroups) 来创建表单输入。这样的方法合适吗?

Values 表有 4 个字段:iditem_idfield_idvalue(我在 wordpress 表结构中看到的 LongText。我不需要像某些建议的那样为每个 FieldType 设置不同的表eav-articles(其中没有我需要的))。基本上我不需要id,但我认为CakePHP 需要一个primaryKey 并且无法处理item_idfield_id 的索引。

谢谢,

手册

【问题讨论】:

  • 您现在处于无 SQL 领域!查看 MongoDB / CouchDB - 您不需要需要定义任何集合结构,并且可以设置管理员能够从添加/编辑视图中添加/删除字段,使用 ORM 将结束轻松进入数据库。

标签: cakephp cakephp-2.0


【解决方案1】:

我最近在行为中构建的一个解决方案将使用模型CustomField 来描述整个模型的全局或该模型中的特定记录的额外字段。我还会在每个模型上都有一个名为 custom_fields 的文本字段,该字段使用的行为将存储带有自定义字段数据的 json 数组。

之后我只是添加了一些回调魔法,使它在我查询时以正确的格式输出自定义字段并将自定义字段保存为普通字段。

这是我制作的一个快速且简单的解决方案,但如果您将此作为应用程序的核心部分,您应该考虑查看 No-SQL 数据库。在 http://github.com/ichikaway/cakephp-mongodb 有一个很好的 CakePHP 数据源,可以与 MongoDB 一起使用。

【讨论】:

    猜你喜欢
    • 2014-05-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-12-15
    • 1970-01-01
    • 1970-01-01
    • 2012-12-29
    • 2013-01-22
    相关资源
    最近更新 更多