jacerider / neo_extra_field
提供一种插件类型,类似于实际字段,但不存储数据。
Requires
- drupal/core: ^10.3
- jacerider/neo: ^1
This package is auto-updated.
Last update: 2024-09-29 18:18:49 UTC
README
额外字段模块提供两种插件类型。一种用于实体表单中的额外字段,另一种用于实体视图中的额外字段。
开发者使用
此模块允许开发者通过提供插件向可字段化实体添加自定义表单元素。提供两种插件类型:NeoExtraFieldForm 和 NeoExtraFieldDisplay。NeoExtraFieldForm 元素通常提供表单修改,并可以像字段小部件一样在实体表单(模式)中定位。NeoExtraFieldDisplay 元素通常结合现有实体数据并将其格式化为显示。它们可以像字段小部件一样在实体视图模式中定位。与正常实体字段不同,额外字段不“拥有”数据且不存储。但它们使用它们应用到的实体的实体数据。
示例
额外字段示例模块(modules/neo_extra_field_example)包含可用的显示和表单插件的插件。您可以将示例复制到您的(自定义)模块中,并根据您的需求对其进行修改。
网站构建者使用
创建后,额外字段可以像其他字段一样用于表单和视图模式。额外字段是为特定实体/实体类型组合创建的。这就是为什么您只能在特定的表单或视图模式中找到额外字段插件,而不是在所有模式中。
在为插件创建的实体的“管理表单显示”标签页中,启用并定位一个NeoExtraFieldForm元素,相对于其他字段。在实体的“管理显示”标签页中,您可以在相对于其他字段的位置启用并定位一个NeoExtraFieldDisplay元素。
(可选)在twig模板中打印NeoExtraFieldDisplay元素的输出。像任何其他字段一样,额外字段在实体视图模式中渲染。元素的渲染数组提供为neo_extra_field_[plugin_name]。例如,在节点模板中:{{ content.neo_extra_field_[plugin_name] }}。
API
额外字段使用hook_entity_neo_extra_field_info()根据实体类型和捆绑包声明字段。插件可以按实体类型和捆绑包进行配置(使用注释)。
在NeoExtraFieldForm插件中,表单和表单状态作为参数提供到NeoExtraFieldFormInterface::formElement。该方法必须返回一个可渲染的表单数组。
在NeoExtraFieldDisplay插件中,正在查看的实体对象作为参数提供到NeoExtraFieldDisplayInterface::view。该方法必须返回一个可渲染的数组。
像插件一样,有一个修改钩子可用。有关hook_neo_extra_field_form_info_alter()和hook_neo_extra_field_display_info_alter()的文档,请参阅neo_extra_field.api.php。
表单插件
类型为“NeoExtraFieldForm”的插件用于提供额外字段表单。插件示例可以在包含的neo_extra_field_example模块中找到。
表单插件必须放置在:[模块名称]/src/Plugin/NeoExtraField/Form。创建插件后,清除缓存以使Drupal识别它。
表单插件必须至少扩展NeoExtraFieldFormInterface。
NeoExtraFieldForm注释至少应包含
* @NeoExtraFieldForm(
* id = "plugin_id",
* label = @Translation("Field name"),
* bundles = {
* "entity_type.bundle_name"
* }
* )
要定义一个针对给定实体类型所有捆绑包的插件,请使用'*'通配符
* bundles = {
* "entity_type.*"
* }
要定义一个针对所有实体类型及其所有捆绑包的插件,请使用
* bundles = {
* "*.*"
* }
其他注释选项
* weight = 10,
* visible = true
显示插件
类型为“NeoExtraFieldDisplay”的插件可用于提供额外字段显示。插件示例可以在包含的neo_extra_field_example模块中找到。
显示插件必须放置在:[模块名称]/src/Plugin/NeoExtraField/Display。创建插件后,清除缓存以使Drupal识别它。
显示插件必须至少扩展NeoExtraFieldDisplayInterface。
NeoExtraFieldDisplay 注解至少应包含
* @NeoExtraFieldDisplay(
* id = "plugin_id",
* label = @Translation("Field name"),
* bundles = {
* "entity_type.bundle_name"
* }
* )
有关更多注解选项,请参阅表单插件。
插件基础类
提供了不同的基础类,每个类都包含不同的工具。
NeoExtraFieldFormBase(表单插件)
为表单插件提供了一些辅助器,以获取额外的表单渲染上下文数据。
NeoExtraFieldDisplayBase(显示插件)
使用此基础类时,所有输出格式化都必须在插件中完成。插件输出周围不提供HTML包装器。
NeoExtraFieldDisplayFormattedBase(显示插件)
使用此基础类时,字段输出将被字段HTML包装器包装。字段模板可以用来覆盖HTML输出,就像通常那样。