【问题标题】:Drupal 8 create field programmaticallyDrupal 8 以编程方式创建字段
【发布时间】:2016-03-19 01:20:29
【问题描述】:

我为 Drupal 8 创建了一个自定义模块,允许用户选择内容类型,以便以编程方式添加一些字段。 如何创建一些字段(在这种情况下为文本类型)并将它们附加到具有自定义模块的内容类型?

一些帮助?

谢谢。

【问题讨论】:

    标签: drupal drupal-8 drupal-fields drupal-field-api


    【解决方案1】:

    为 Drupal 8 结帐 Field API

    它实现了几个功能,hook_entity_bundle_field_info 可能是您需要的,这里是该钩子文档中的文本字段示例

    function hook_entity_bundle_field_info(\Drupal\Core\Entity\EntityTypeInterface $entity_type, $bundle, array $base_field_definitions) {
      // Add a property only to nodes of the 'article' bundle.
      if ($entity_type->id() == 'node' && $bundle == 'article') {
        $fields = array();
        $fields['mymodule_text_more'] = BaseFieldDefinition::create('string')
          ->setLabel(t('More text'))
          ->setComputed(TRUE)
          ->setClass('\Drupal\mymodule\EntityComputedMoreText');
        return $fields;
      }
    }
    

    您可能还需要字段存储,请查看hook_entity_field_storage_info

    【讨论】:

      【解决方案2】:

      你需要创建FieldType、FieldWidget和FieldFormatter(如果需要的话),Core/Field/Plugin/Field中有很好的例子。

      这里有一个很好的例子https://www.drupal.org/node/2620964

      【讨论】:

        【解决方案3】:

        您可以使用此模块以编程方式从自定义 YAML 或 JSON 文件一次为任何实体类型和多个包创建字段:

        https://drupal.org/project/field_create

        模块最简单的方法是在 hook_field_create_definitions() 中添加字段。只需创建这个函数:

        function mymodule_field_create_definitions_alter(&$definitions) {}
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2018-06-27
          • 1970-01-01
          • 2017-09-28
          • 2021-10-05
          • 2016-03-19
          • 2014-08-02
          • 1970-01-01
          • 2017-09-13
          相关资源
          最近更新 更多