字段和字段实例之间的区别?


15

当我们去的路径/admin/structure/types/manage/article/fields,并使用Add new field选项或Add existing field选项,是否创建一个字段,创建字段实例或附加字段实例?如何区分它们?因此,以编程方式,何时使用field_create_fieldfield_create_instance和field_attach API?

在字段API文档中,它仅提及管理UI,从不谈论创建字段和字段实例的路径。因此令人困惑。我什至不知道我是否有意义。


:这应该神秘化它dikini.net/31.08.2010/...
克莱夫

通常情况下,您添加的每个字段都会在数据库中创建一个新字段,而当您添加现有字段时,它不会创建新表,而只是将其添加到现有表中。
Mohammed Shameem

1
@Mohammed Shameem,谢谢你,那么一个实例是什么?用例是什么?或者更确切地说,我们在现实中使用它吗?
Eugene Gerome

1
如果目的是或功能将相同,则最好使用相同的字段实例。例如,您具有不同的内容类型,并且要添加相同的分类标准词汇。最好将相同的字段添加到所有内容类型,而不是为每种内容类型创建不同的字段。在内部,这将减少由drupal构建的表的数量。并搜索词汇表会变得更好。
Mohammed Shameem

1
因此,我们在路径node/add/article上看到的字段是字段实例(可以在几种不同的实体类型中重用)。而路径/admin/structure/types/manage/article/fields处的字段就是字段。在数据库中,我看不到字段实例表,而只看到field_data表,我猜想,当我们第一次/admin/structure/types/manage/article/fields使用path在path上创建字段时会得到它field_create_field。然后将实例附加到我们在path上看到的包(在本例中为文章)node/add/article
Eugene Gerome

Answers:


24

字段是字段本身的基本定义。字段实例是该字段的实例,附加到实体/捆绑包。

  1. 使用field_create_field创建字段
  2. 具有field_create_instance的字段实例

要检查字段或实例是否存在,请使用

  1. field_info_field
  2. field_info_instance

通过UI创建字段时,Drupal始终在该实体/捆绑上创建字段实例。

如果要添加现有字段,则将克隆字段数据,并在新实体/捆绑上创建字段实例。

最后,字段设置全局应用于该字段,实体实例设置在实体束之间可能有所不同。


2
非常感谢,您消除了我的疑虑。如果我有特权,我会为您的信息+1。
Eugene Gerome
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.